Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Keeping Wikipedia fast [WeLoveSpeed]
Search
Peter Hedenskog
September 20, 2019
Technology
1
430
Keeping Wikipedia fast [WeLoveSpeed]
Peter Hedenskog
September 20, 2019
Tweet
Share
More Decks by Peter Hedenskog
See All by Peter Hedenskog
Measuring Web Performance for Wikipedia using synthetic testing tools
soulislove
0
380
Measuring Web Performance Using Selenium
soulislove
2
720
Monitoring Web Performance using Open Source tools (Stockholm)
soulislove
2
220
Monitoring web performance using Open Source tools (San Francisco & Silicon Valley Web Performance Group)
soulislove
1
330
Monitoring web performance using Open Source tools (South Bay JavaScript Meetup)
soulislove
0
230
Optimise your home page (fast as lightning)
soulislove
1
45
Integrating performance tools into continuous delivery
soulislove
0
230
How to make your boss speed-curious and other webperf tricks - coldfront2014
soulislove
0
170
Sitespeed.io Lightning demo @ Velocity Santa Clara 2014
soulislove
0
110
Other Decks in Technology
See All in Technology
Engineer Career Talk
lycorp_recruit_jp
0
120
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
180
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
Can We Measure Developer Productivity?
ewolff
1
150
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
950
Lambdaと地方とコミュニティ
miu_crescent
2
370
Application Development WG Intro at AppDeveloperCon
salaboy
0
180
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Embracing the Ebb and Flow
colly
84
4.5k
Bash Introduction
62gerente
608
210k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Unsuck your backbone
ammeep
668
57k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
A Tale of Four Properties
chriscoyier
156
23k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Speed Design
sergeychernyshev
24
610
Transcript
Keeping Wikipedia fast Peter Hedenskog - @soulislove
Keeping Wikipedia fast Peter Hedenskog - @soulislove
@soulislove
@soulislove Sweden France
@soulislove
@soulislove
What to do? @soulislove
@soulislove
@soulislove
@soulislove NO!!!!!
@soulislove Jean Bernadotte?
@soulislove
@soulislove Sweden France
@soulislove
@soulislove
@soulislove
Lets talk about performance @soulislove
@soulislove Today Our setup RUM & Synthetic Learnings I’ve got
the last four years Case study one regression
@soulislove https://news.ycombinator.com/item?id=20903868
@soulislove https://phabricator.wikimedia.org
@soulislove https://grafana.wikimedia.org
Why is performance important? @soulislove
We want to bring free knowledge to the world independently
of where you live and your economic status. @soulislove
@soulislove
Engineers/dev cares too! @soulislove
Why is performance hard (for us)? @soulislove
Keeping Wikipedia fast @soulislove https://news.ycombinator.com/item?id=20903868 Keeping Wikipedia fast is easy
right?
@soulislove
The Wikipedia Performance Team Challenge All Wikis are different (JS/CSS)
All pages are different (JS/CSS) All users are different (JS/CSS) @soulislove
Our history of performance testing @soulislove
PHP -> RUM-> Synthetic @soulislove
RUM @soulislove
@soulislove Metrics from real users Sampled (1/100) Buckets: platform, browser,
location https://github.com/wikimedia/mediawiki-extensions-NavigationTiming https://grafana.wikimedia.org/d/000000143/navigation-timing?refresh=5m&orgId=1
@soulislove
@soulislove
@soulislove
How we use RUM @soulislove Metrics from “all” users/scenarios Median,
75, 95, 99 - percentiles Alert on regressions First Paint / LoadEventEnd BFF with synthetic
Synthetic testing @soulislove
@soulislove
@soulislove Browsertime + WebPageReplay
That flat line @soulislove
Deviation @soulislove
How we use synthetic @soulislove Fixing the chaos (or creating
more?) Wayback machine Three URLs per alert First Visual Change BFF with RUM
Learnings: Synthetics @soulislove
Validate metrics! @soulislove
@soulislove
https://phabricator.wikimedia.org/T187981 @soulislove
@soulislove
page1 != page2 @soulislove
@soulislove Deviation
@soulislove User journey: second view
@soulislove User journey: second view
Server matters! @soulislove
1. AWS vs GCS vs other cloud providers 2. Servers
change over time (what runs on the same physical server?) 3. C4.xlarge != C4.xlarge @soulislove
@soulislove https://phabricator.wikimedia.org/T192138 https://phabricator.wikimedia.org/T192138 https://phabricator.wikimedia.org/T192138 https://youtu.be/pYbgcDfM2Ts?t=1575
Testing multiple steps are hard @soulislove
How long time do your user stay on each page?
How long do browsers keep HTTP connections open? @soulislove
Browser versions matter @soulislove
None
Know when browsers are updated!!! @soulislove
Learnings: RUM @soulislove
RUM can be good for finding regressions @soulislove
None
User Timing API != what shows on screen @soulislove
@soulislove
New element timings are better! @soulislove
@soulislove
Browser versions are important @soulislove
@soulislove
@soulislove
The hidden tabs incident @soulislove
@soulislove The idea: async all the things … use setTimeout
to run things later.
@soulislove https://phabricator.wikimedia.org/T146510 setTimeout
@soulislove https://phabricator.wikimedia.org/T146510
@soulislove 10% of the traffics opens in another tab!
What are we missing? @soulislove
@soulislove
@soulislove RUM Higher sample rate Buckets per page type Which
metrics are important?
@soulislove Synthetic Real mobile phones (T197847) Easier for devs to
add tests (T225416)
Case study: 3/9-2019 incident @soulislove https://phabricator.wikimedia.org/T231929
@soulislove Firefox
@soulislove Firefox
@soulislove Chrome
@soulislove Firefox
@soulislove WebPageTest
@soulislove
@soulislove TTFB? No: because visible with WebPageReplay
@soulislove ttfb?
@soulislove ttfb?
@soulislove ttfb?
@soulislove Screenshots/video Diff the HAR using https://compare.sitespeed.io or size per
content type in Graphite
@soulislove ttfb?
@soulislove We got 311 span class=“cs1-visible-error”!!! Citation errors: not shown
to readers https://en.wikipedia.org/wiki/Help:CS1_errors
@soulislove Credits Pippi and father - SVT Quick et Flupke
- Hergé The king shouting - Expressen The scream - Edward Munch Napoleon - Horace Vernet Engineers India Space Shuttle - Expressen Various pictures of Carl Gustaf - Swedish tax payers through the apanage
@soulislove Questions?? @soulislove
[email protected]