Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

80
!"# %&'( )*+*, -./012341456758, +92)* /:;65; )*+* 8:<. =70:>:<?14@A 857BBC /.857D:E/:8: 14F1?5:>./?; !"#$%& ()*+,-.%/ 01"2- / 3)"141$2%5 "16$)*7."7% 8%98-$7/1"-% / :"#%29%

description

Презентация Андрея Кузьмичева, Руководителя группы нагрузочного тестирования Конференция SQA Days Spb, ноябрь 2010

Transcript of Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

Page 1: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!"#$%&'($)*+*,$-./012341456758,+92)*$/:;65;$)*+*$8:<.

=70:>:<?14@A$857BBC$/.857D:E/:8:$14F1?5:>./?;!"#$%&'()*+,-.%/

01"2-'/'3)"141$2%5'"16$)*7."7%'8%98-$7/1"-%'/':"#%29%

Page 2: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 3: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!"#$%&, 1 "$'()*(

http://company.yandex.ru/public/yac/

Yet another Conference 2010

Page 4: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!"#$%& '&()*)+,?!

Page 5: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

HP LoadRunner

Apache JMeter

Borland SilkPerformer

Visual Studio Load Test

abpylot

http_load

Siege

Grinder

httperfTsung

WebLOAD

Rational Performance Tester

Load Impact

Page 6: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

-"./01$ 1 2"+"31$ %"(45+6

Page 7: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

7).$(/,1$ 1 8$4*.)5(6$ %"(45+6

Page 8: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

9)%"*14(6$ %"(45+6

Page 9: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!"#$%&'("$) "*+%&,-."-+- $(#$/%-0*"/1 !"#$%&

'()%&

*)"+$%& ,-"./%&

Page 10: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 11: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 12: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 13: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

HP LoadRunner

Apache JMeter

Borland SilkPerformer

Visual Studio Load Test

abpylot

http_load

Siege

Grinder

httperfTsung

WebLOAD

Rational Performance Tester

Load Impact

Page 14: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

HP LoadRunner

Apache JMeter

Borland SilkPerformer

Visual Studio Load Test

abpylot

http_load

Siege

Grinder

httperfTsung

WebLOAD

Rational Performance Tester

Load Impact

Page 15: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$

«Yeah, well... I'm gonna go build my own theme park, with blackjack and hookers. In fact, forget the park!»

Bender, Futurama

Page 16: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!"#$%&'("$) "*+%&,-."-+- $(#$/%-0*"/1 !"#$%&

'()%&

*)"+$%& ,-"./%&

Page 17: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

/0&-1. ,"0&12 .3"4 52$676-8?2. 9/" 2 $6. 7")20()".:3. ;/./27)&$(& 14. 9/" 2 $6. 7")20()".:5. ;/./27)&$(& 26. 9/" 2 $6. 7")20()".:7. <6/6-.(.

Page 18: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1. 2-.('& #0-3 4&"*5*%6?

2. 7$- & "*# 5-8&./8-#93. :$#$&58("/(4. 7$- & "*# 5-8&./8-#95. :$#$&58("/(6. 2-.('& 4&"*5*%6?7. 2-$-'& .$- 4&"*5*%6!

Page 19: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

Phantom:5" 41./(" "*51%1;1+"<)((6= .$$$$$3,1= web-4$+<$+,,"5"+6= ()&#1.4> ;)2)<)5/

<"*+"46

Page 20: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1*&-2-32 *24,05'&'"%

?3+$31+"<)((6$ 2)((6$

Page 21: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1*&-2-32 *24,05'&'"%!".(6= 2)%* ;)*+"4"<, "5<$5"<,

<+$%$(1 <6*".($(1>

Page 22: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1*&-2-32 *24,05'&'"%@"445)("<.$(()> 45+&,5&+)

;)*+"4"<

/route_jams/*/abc?z=[`11`-`17`]&origin=(‘jsRouter’,‘maps’)&[rll=*]&[output=‘geometry’]

Page 23: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1*&-2-32 *24,05'&'"%

? $AB 45)51451,) 4 %10$($=, *)+)%$5+6 ",+&C$(1> 1 $A$ %("3" #$3" :)

Page 24: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

Wiki

!"#$$

95)51451,)

7"(15"+1(31

JIRA

Page 25: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1. 2-.('& #0-3 4&"*5*%6?2. 7$- & "*# 5-8&./8-#9

3. :$#$&58("/( 14. 7$- & "*# 5-8&./8-#95. :$#$&58("/( 26. 7$- & "*# 5-8&./8-#97. 2-$-'& .$- 4&"*5*%6!

Page 26: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

Wiki

!"#$$

95)51451,)

7"(15"+1(31

JIRA

Page 27: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

420!+

"#$%"&'

400+ !"#$%&#'

over 1000 ($)#'$%

daily

Page 28: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 29: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!"#$ % JIRA<"17"$&$/6

«=6>-2?"0$"& /&./(-"36$(&»

%#&'()*)+* ,#-"'.)'/' &'(0

Page 30: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!"#$ % JIRA<"17"$&$/6

«=6>-2?"0$"& /&./(-"36$(&»

1+(2"3 «4#-,+ - ,#-"'.)5. &'(*., +6.*)*))5* 6# &'-(*7)+* 5 .+)8"»

Page 31: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1+(2"3 «4#-,+ - ,#-"'.)5. &'(*., +6.*)*))5* 6# &'-(*7)+* 5 .+)8"»

Page 32: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$: 4&6&-32 % cron $&76,8 93-,',

1+(2"3 «4#-,+ - ,#-"'.)5. &'(*., +6.*)*))5* 6# &'-(*7)+* 5 .+)8"»

@6?6 A6$$%B 52$676-86

C3&A"1)&$(& 1$&3 7"0/2

C3&A"1)&$(& 3 jabber ."/-2A$(82

Page 33: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

JIRA: dashboard $*"6/#$*

Page 34: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

JIRA: dashboard #8&;<)

Page 35: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

JIRA: /"=-%'*>/1 /, 4&"*5*%6*

Page 36: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

4&"*5*%6: 0#( - ,*?*.(

Page 37: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!

Page 38: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1. 2-.('& 4&"*5*%6?2. 7$- & "*# 5-8&./8-#93. :$#$&58("/( 1

4. 7$- & "*# 5-8&./8-#95. :$#$&58("/( 26. 7$- & "*# 5-8&./8-#97. @*$*%#/#

Page 39: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

A6$/0")3 $(#$

Page 40: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

B(#$ ,*6-".("

Page 41: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 42: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

:3054;D2$(51E1,)5"+ 2.> 3+&**6 ;)*+"4"< <

+)%,)F 5$45)

G)*+1%$+, <4B ,+"%$ %"+26, ;)*+"4"< , *)+5($+)% 1 *$+$4)2",

Page 43: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

<$&'2*3-),*=, 12-14 -"()*(

http://clck.ru/2_pR

CSEDaysApplication 2010

Page 44: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

A0$-'*$/.(#6-( 0)108("/( %*,8*?-6

Page 45: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

A0$-'*$/.(#6-( 0)108("/( %*,8*?-6

Page 46: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

C(+%(##/-""-( #%*0"("/(

Page 47: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1. C(*6$/0")3 /"#$%&'("$2. 7$- & "*# 5-8&./8-#93. :$#$&58("/( 14. 7$- & "*# 5-8&./8-#9

5. :$#$&58("/( 26. 7$- & "*# 5-8&./8-#97. @*$*%#/#

Page 48: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

WTF?

Page 49: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 50: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 51: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

&'()*(+ ,-*. rasp.yandex.ru

Page 52: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 53: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

«A lot of literature... tended to offer mathematical models... This approach might be mathematically interesting and elegant, but it doesn’t help the operations engineer when he is seeing his site dying under the weight of a link from the front page of Yahoo!, Digg or CNN»

John Allspaw, manager of operations engineering, Flickr.com

Page 54: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 55: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

9#6.*-"+. ':5;)5< "+6*3 )# ='37*

D/">" 1($(121 + *-#$/0.$/#/1-* 1(#2)B(/"3 3 .2/8(!

Page 56: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

&'()*(+ ,-*. rasp.yandex.ru

Page 57: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

!34-5*(+ ,-*. rasp.yandex.ru

Page 58: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 59: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1.

Page 60: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

2.

Page 61: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

3.

Page 62: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

4.

Page 63: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

— EA1($%, 7-(3&/, 1% ?63/-6 7)6$(-2&1 $6

XX% 23&)(0(/: /-6F(8 $6 ./-6$(G2 ZZZ!

Page 64: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 65: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

— ,-(3&/, 2 $6. &./: YYY-HI8&$A. C8"):8" 16J($"8 $61 $6A" &#& A"./63(/: 0/"H% 0&-&? 76-2 1&.KG&3 "$ $&

276)?

Page 66: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Page 67: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

Hits rulezzz! *

* 5"#(" rulezzz 2.> *+"$,5"< 4 ($+)<("%$+(6% 1 ($&*+)<.>$%6% 5+)E1,"% (web, API (!) 1 5.*.)

Page 68: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

Performance planning

Page 69: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

Capacity planning

Page 70: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1. C(*6$/0")3 /"#$%&'("$2. D%*"/$9 "*?- 0#(3. :$#$&58("/( 14. 7$- & "*# 5-8&./8-#95. :$#$&58("/( 2

6. 7$- & "*# 5-8&./8-#97. @*$*%#/#

Page 71: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$

>?= 1

MySQL+E)=.6

/bigdisk (1,5 Tb)

t34

H)(,1

target

710$(1

>?= 2

GlusterFS

SSH

HTTP

Page 72: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$

>?= 1

MySQL+E)=.6

/bigdisk (1,5 Tb)

t34

H)(,1

target

710$(1

>?= 2

GlusterFS

SSH

HTTP

Page 73: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$

>?= 1

MySQL+E)=.6

/bigdisk (1,5 Tb)

t34

H)(,1

target

710$(1

>?= 2

JIRA & coWeb

GlusterFS

SSH SSH

HTTP

Page 74: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$: '&-$315+ ,"%*&5$+"< *+),51#$4,1 <" <4$F IJ

Xeon [email protected]/24Gb/4xSATA WD5002ABYS

10 Gb + c*$K1)./(" ()45+"$((6= 4$5$<"= 45$,

Page 75: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$: 93>2-3

6 /&./"3%B 8)6./&-"3"/ 3 A" 15 16J($"8

!6J($8( -6?$%&, $"(A&$/(0$% production

,"0/( 3.&>A6 3 "A$"1.3(/0& . /6$861(

Page 76: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

OpenVZ() ,.)45$+$ 1; 15 E1;1#$4,1F %)01(

Page 77: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

1. C(*6$/0")3 /"#$%&'("$2. D%*"/$9 "*?- 0#(3. E%&;/' #- 0#(' 0-6%&+4. 7$- & "*# 5-8&./8-#95. :$#$&58("/( 26. 7$- & "*# 5-8&./8-#9

7. @*$*%#/#

Page 78: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

+,-&.&*$! @'6.'A)' (8;B#0 -"3*(0(,# C .+3*

! D3'C06,# - +)-"38.*)"#.+ C E)7*,-*

! Web-7'-"8& - *7+)'< #C"'3+6#F+*<

! G*6#C+-+.'-"2 '" C*)7'3#

! H-,8--"C*))5< 3#68. C)8"3+

! !+.&#"+B)5< C+7 :)

Page 79: Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе

6#/57/%?