kill bottlenecks with gearman, sphinx, and memcached, confoo 2011

41
Killing Bottlenecks 1 paul reinheimer @preinheimer 1 Thursday, March 10, 2011

Upload: bachkoutou-toutou

Post on 25-May-2015

1.481 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Killing Bottlenecks

1paul reinheimer @preinheimer

1Thursday, March 10, 2011

Page 2: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Goals for TodayIntroduce Tools

Help you recognize problems

Hints on implementation

Horror Stories

2

2Thursday, March 10, 2011

Page 3: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Provides a simple queue service

Workers connect and identify work they can complete, clients hand off jobs when available

Created by Danga Interactive (livejournal)

3

3Thursday, March 10, 2011

Page 4: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Stores data in memory

really really fast!

Many servers can be used at once to provide a single large datastore

Created by Danga Interactive (livejournal)

4

4Thursday, March 10, 2011

Page 5: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Excellent search tool

Import data from a variety of sources (commonly a database), index it quickly, then run searches

5

5Thursday, March 10, 2011

Page 6: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Know Thyself

6

6Thursday, March 10, 2011

Page 7: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Workers sign up with work they can do, many workers can each sign up with a different set of jobs.

Clients connect to Gearman and pass off jobs, this is done asynchronously, they get to keep working

Failed jobs are re-submitted a specified number of times.

7

7Thursday, March 10, 2011

Page 8: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Workers sign up with work they can do, many workers can each sign up with a different set of jobs.

Clients connect to Gearman and pass off jobs, this is done asynchronously, they get to keep working

Failed jobs are re-submitted a specified number of times.

8

Gearman

8Thursday, March 10, 2011

Page 9: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Clients

9

9Thursday, March 10, 2011

Page 10: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Workers

10

10Thursday, March 10, 2011

Page 11: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Managing Workers

11

11Thursday, March 10, 2011

Page 12: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Managing Workers

12

12Thursday, March 10, 2011

Page 13: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Managing Workers

13

13Thursday, March 10, 2011

Page 14: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Managing Workers

13

13Thursday, March 10, 2011

Page 15: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Managing Workers

13

13Thursday, March 10, 2011

Page 16: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Supervisor

14

14Thursday, March 10, 2011

Page 17: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Gearman AlternativesRabitMQ

Amazon Simple Queue Service

ZeroMQ

15

15Thursday, March 10, 2011

Page 18: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Stores data in memory

really really fast!

Many servers can be used at once to provide a single large datastore

Created by Danga Interactive (livejournal)

16

16Thursday, March 10, 2011

Page 19: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

17

Promises

17Thursday, March 10, 2011

Page 20: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Promises

memcached doesn't lie, it just doesn't make promises

18

18Thursday, March 10, 2011

Page 21: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Promises

it makes a promise

19

19Thursday, March 10, 2011

Page 22: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Promises

data will no longer be available after it expires

20

20Thursday, March 10, 2011

Page 23: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Promises

When memcached doesn't have the information you need, get it elsewhere.

Use a read-through caching callback or put it in your caching object.

memcached is allowed to lose data!

21

21Thursday, March 10, 2011

Page 24: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Consistent Hashing

22

22Thursday, March 10, 2011

Page 25: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Hot Items = Hot Servers

23

23Thursday, March 10, 2011

Page 26: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Hot Items = Hot Servers

23

23Thursday, March 10, 2011

Page 27: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Memcached Alternativesredis

Berkeley DB

Tokyo Cabinet

Tokyo Tyrant

Voldemort

Riak

24

24Thursday, March 10, 2011

Page 28: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Excellent search tool

Import data from a variety of sources (commonly a database), index it quickly, then run searches

25

25Thursday, March 10, 2011

Page 29: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

26

id title year rating1 TMNT 1988 9.5

2 Goonies 1989 9.0

3 The Postman 1992 3.5

4 Alien 1994 8.5

26Thursday, March 10, 2011

Page 30: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

27

id title year rating studio category1 TMNT 1988 9.5 x action

2 Goonies 1989 9.0 y adventure

3 The Postman 1992 3.5 z boring

4 Alien 1994 8.5 a awesome

27Thursday, March 10, 2011

Page 31: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

28

id title year rating studio category1 TMNT 1988 9.5 x action

2 Goonies 1989 9.0 y adventure

3 The Postman 1992 3.5 z boring

4 Alien 1994 8.5 a awesome

28Thursday, March 10, 2011

Page 32: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

28

id title year rating studio category1 TMNT 1988 9.5 x action

2 Goonies 1989 9.0 y adventure

3 The Postman 1992 3.5 z boring

4 Alien 1994 8.5 a awesome

id actor1 Mel Gibson

2 Shredder

3 Sigourney Weaver

id tag1 kids

2 awesome

3 sci-fi

id producer1 1

2 2

3 3

4 4

film_id tag_id1 2

2 3

3 4

4 5

id director1 blue

2 red

3 green

4 orange

film_id description1 Four awesome turtles...

2 Friends, pirates, goonies.

3 Nap

4 They tried to turn around

28Thursday, March 10, 2011

Page 33: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

29

id title year rating studio category1 TMNT 1988 9.5 x action

2 Goonies 1989 9.0 y adventure

3 The Postman 1992 3.5 z boring

4 Alien 1994 8.5 a awesome

id actor1 Mel Gibson

2 Shredder

3 Sigourney Weaver

id tag1 kids

2 awesome

3 sci-fi

id producer1 1

2 2

3 3

4 4

film_id tag_id1 2

2 3

3 4

4 5

id director1 blue

2 red

3 green

4 orange

film_id description1 Four awesome turtles...

2 Friends, pirates, goonies.

3 Nap

4 They tried to turn around

29Thursday, March 10, 2011

Page 34: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

29

id title year rating studio category1 TMNT 1988 9.5 x action

2 Goonies 1989 9.0 y adventure

3 The Postman 1992 3.5 z boring

4 Alien 1994 8.5 a awesome

id actor1 Mel Gibson

2 Shredder

3 Sigourney Weaver

id tag1 kids

2 awesome

3 sci-fi

id producer1 1

2 2

3 3

4 4

film_id tag_id1 2

2 3

3 4

4 5

id director1 blue

2 red

3 green

4 orange

film_id description1 Four awesome turtles...

2 Friends, pirates, goonies.

3 Nap

4 They tried to turn around

film_id producer_id1 1

2 2

3 3

4 4

film_id tag_id1 1

2 2

3 3

4 4

film_id actor_id1 1

2 2

3 3

4 4

film_id tag_id1 1

2 2

3 3

4 4

film_id director_id1 1

2 2

3 3

4 4

film_id desc_id1 1

2 2

3 3

4 4

29Thursday, March 10, 2011

Page 35: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

30

SELECT `dvd_scenes`.`scene_id`, `dvds`.`dvd_id`, `dvds`.`name`, `dvds`.`name` AS sort_title, `dvds`.`featured` AS premium, `dvds`.`description`, `dvds`.`date_released`, `dvds`.`channel_id`, `dvds`.`studio_id`, `dvd_scenes_dyn`.`times_viewed` AS sub_order, `dvd_scenes_dyn`.`rating` AS rating, `channels`.`name` AS channel_name, `studios`.`name` AS studio_name, `channels_keywords`.`keywords` AS channel_keywords, GROUP_CONCAT(DISTINCT `categories`.`name` ORDER BY `categories`.`name` DESC SEPARATOR ', ') AS categories_list, GROUP_CONCAT(DISTINCT `models`.`name` ORDER BY `models`.`name` DESC SEPARATOR ', ') AS models_listFROM `dvd_scenes` INNER JOIN dvds ON dvds.dvd_id = dvd_scenes.dvd_id INNER JOIN dvd_scenes_dyn ON dvd_scenes_dyn.id = dvd_scenes.scene_id LEFT JOIN scenes_categories ON dvd_scenes.scene_id = scenes_categories.scene_id LEFT JOIN categories ON `scenes_categories`.`category_id` = categories.category_id LEFT JOIN studios ON studios.studio_id = dvds.studio_id LEFT JOIN scenes_models ON scenes_models.scene_id = dvd_scenes.scene_id LEFT JOIN `channels` ON channels.channel_id = dvds.channel_id LEFT JOIN `channels_keywords` ON dvds.channel_id = channels_keywords.channel_id LEFT JOIN `models` ON scenes_models.model_id = models.model_idWHERE dvds.is_active = 1 AND dvd_scenes.is_active = 1 AND dvds.date_released < UNIX_TIMESTAMP() AND dvds.date_released > 0 AND dvds.channel_id NOT IN (21,26)GROUP BY scene_id

30Thursday, March 10, 2011

Page 36: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

31

sphinx

http://www.flickr.com/photos/waldenpond/4237758518/

31Thursday, March 10, 2011

Page 37: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Sphinx AlternativesLucene

With Elastic Search

solr

32

32Thursday, March 10, 2011

Page 38: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Assigning Problems

33

33Thursday, March 10, 2011

Page 39: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

AppendixPaul Reinheimer - @preinheimer - http://blog.preinheimer.com

Memcached - http://memcached.org/

supervisor - http://supervisord.org/

Sphinx - http://sphinxsearch.com/

Gearman - http://gearman.org/

34

34Thursday, March 10, 2011

Page 40: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

35

5 Stars!

35Thursday, March 10, 2011

Page 41: Kill bottlenecks with gearman, sphinx, and memcached, Confoo 2011

Feedback

36

http://joind.in/2867

36Thursday, March 10, 2011