Scaling Quizlet

30
Scaling Quizlet Andrew Sutherland Founder Friday, April 20, 12

description

 

Transcript of Scaling Quizlet

Page 1: Scaling Quizlet

Scaling Quizlet

Andrew SutherlandFounder

Friday, April 20, 12

Page 2: Scaling Quizlet

Quizlet.com

We provide educational tools for millions of kids.

Friday, April 20, 12

Page 3: Scaling Quizlet

• 70M pageviews/mo

• 7.5M uniques/mo

• Quantcast US Rank: #385

• 99.97% uptime this year

Traffic

Friday, April 20, 12

Page 4: Scaling Quizlet

Traffic Pattern

6x growth in 4 weeks, every yearFriday, April 20, 12

Page 5: Scaling Quizlet

• 160 GB in MySQL

• 1.1B rows in `answers` table

• One big 48GB master does it all (are we crazy?)

Data

Friday, April 20, 12

Page 6: Scaling Quizlet

• 2 Load Balancers

• 3 Web Servers

• 2 Database machines

• ~15 machines doing services

Architecture

Friday, April 20, 12

Page 7: Scaling Quizlet

Page requests: - 750 rps peak - 300 rps avg

Memcached: - 2,500 qps peak - 1,000 qps avg

MySQL:- 1,100 qps peak- 465 qps avg

Throughput

Friday, April 20, 12

Page 8: Scaling Quizlet

Removing joins.

Putting all ID-based lookups in memcached.

3x’d our performance overnight,prevented complicated architecture

Biggest single win(2010)

Friday, April 20, 12

Page 9: Scaling Quizlet

Watching syscalls with DTrace

dtrace -n 'syscall::open:entry { printf("%s %s",execname,copyinstr(arg0)); }'

Found PHP opening files because of require_once(). Switched to require().

Friday, April 20, 12

Page 10: Scaling Quizlet

Need better visibility into apps

Site got 2x faster here

Friday, April 20, 12

Page 11: Scaling Quizlet

AVERAGESSUCK

Friday, April 20, 12

Page 12: Scaling Quizlet

Enter New Relic(live demo)

Friday, April 20, 12

Page 13: Scaling Quizlet

New Relic isn’t enough.

Friday, April 20, 12

Page 14: Scaling Quizlet

Check out our super-crappy,super-awesome Inline I/O viewer

Friday, April 20, 12

Page 15: Scaling Quizlet

And our super-crappy,super-awesome App log viewer

Friday, April 20, 12

Page 16: Scaling Quizlet

Check out our super-crappy,super-awesome Log Viewer

Our log viewer

Friday, April 20, 12

Page 17: Scaling Quizlet

YOUR LOGSARE

RELATIONALFriday, April 20, 12

Page 18: Scaling Quizlet

• User ID• IP address• Type• Frequency• Type+Frequency• Response times

Log lookups by

Friday, April 20, 12

Page 19: Scaling Quizlet

Scalable diagnosis of user issues with

feedback(demo)

Friday, April 20, 12

Page 20: Scaling Quizlet

We built a game in Node.

It rocks.

The Future

Friday, April 20, 12

Page 21: Scaling Quizlet

We built a game in Node.

It rocks.

Future

Friday, April 20, 12

Page 22: Scaling Quizlet

We built a game in Node.

It rocks.

Future

Friday, April 20, 12

Page 23: Scaling Quizlet

Single user might have 5 messageswith the server in 1 second.

Connection lasts 30 minutes,not 100ms.

New Scaling Story

Friday, April 20, 12

Page 24: Scaling Quizlet

We’re exploring this now.And need help.

Scaling node

Friday, April 20, 12

Page 25: Scaling Quizlet

Random Tips

Friday, April 20, 12

Page 26: Scaling Quizlet

http://showmewhatswrong.com/

Show Me What’s Wrong

Second coolest website ever.

Friday, April 20, 12

Page 27: Scaling Quizlet

Setup GMail filter for SMS

1. Add filter for [email protected]

2. Forward to [email protected] (VZW)

3. Your app can now text you anytime, for free.

Poor man’s SMS alerts

Friday, April 20, 12

Page 28: Scaling Quizlet

Get the New Relic Menu BarAlways know about how much traffic you have.

Ambient Traffic Awareness

(Available in Mac App Store)

Friday, April 20, 12

Page 29: Scaling Quizlet

Use Vogue!

Never refresh for CSS again!

Voguegithub.com/quizlet/vogue

Friday, April 20, 12

Page 30: Scaling Quizlet

Thanks!

Follow:@asuth

@quizlet

Friday, April 20, 12