機能追加 #733

AWS負荷テスト検証

山本 義治ほぼ9年前に追加. ほぼ9年前に更新.

ステータス:新規開始日:2016/03/18
優先度:通常期日:
担当者:山本 義治進捗 %:

0%

カテゴリ:サーバ環境構築作業時間の記録:-
対象バージョン:-

履歴

#2 山本 義治ほぼ9年前に更新

jmeter構築手順

http://dev.classmethod.jp/cloud/apache-jmeter-master-slave-100mil-req-min/

・master x 1、slave x 10、全てm4.large
・masterは自動シャットダウンを防ぐため通常インスタンス、slaveはスポットインスタンス

#3 山本 義治ほぼ9年前に更新

Configuring remote engine: ec2-52-196-34-159.ap-northeast-1.compute.amazonaws.com:1099
Connection refused to host: ec2-52-196-34-159.ap-northeast-1.compute.amazonaws.com; nested exception is: 
    java.net.ConnectException: 接続がタイムアウトしました
Failed to configure ec2-52-196-34-159.ap-northeast-1.compute.amazonaws.com:1099

スポットインスタンスがシャットダウンすると接続エラーになる
→オンデマンドインスタンスでslave起動する方針に変更

#4 山本 義治ほぼ9年前に更新

テスト1

スレッド数:100

Jmeter-Master x 1
Jmeter-Slave x 1

jmeter.log

結果の概要を生成 +  19700 in    30s =  656.1/s Avg:   151 Min:     1 Max: 10011 Err: 12234 (62.10%) Active: 100 Started: 100 Finished: 0
結果の概要を生成 = 373202 in   536s =  695.7/s Avg:   140 Min:     1 Max: 21819 Err: 215567 (57.76%)
summary +  19700 in    30s =  656.2/s Avg:   151 Min:     1 Max: 10011 Err: 12234 (62.10%) Active: 100 Started: 100 Finished: 0
summary = 373202 in   536s =  695.7/s Avg:   140 Min:     1 Max: 21819 Err: 215567 (57.76%)

xg-jmeter-test.log

1458634987252,1,インストール,200,OK,スレッドグループ 1-91,text,true,561,100,100,1
1458634987253,2,インストール-イベント,403,Forbidden,スレッドグループ 1-91,text,false,232,100,100,2
1458634986752,504,クリック,403,Forbidden,スレッドグループ 1-61,text,false,1662,100,100,3
1458634987255,2,起動-イベント,200,OK,スレッドグループ 1-91,text,true,199,100,100,2
1458634986625,634,クリック,403,Forbidden,スレッドグループ 1-25,text,false,1662,100,100,2
1458634986667,594,クリック,403,Forbidden,スレッドグループ 1-10,text,false,1662,100,100,3
1458634986467,796,クリック,403,Forbidden,スレッドグループ 1-85,text,false,1662,100,100,13
1458634987256,7,インストール,200,OK,スレッドグループ 1-61,text,true,561,100,100,7
1458634987261,3,インストール,200,OK,スレッドグループ 1-10,text,true,561,100,100,3
1458634987257,8,トップビュー-イベント,200,OK,スレッドグループ 1-91,text,true,197,100,100,8
...

ELB: 51084req/m
API: cpu58.4%
API-latency: 0.04s
Redis-Master: cpu8.11%
Redis-Slave: cpu0.782%

API error_log

2016/03/22 17:24:48 [crit] 8711#0: *431490 connect() to 10.0.1.181:6379 failed (99: Cannot assign requested address), client: 10.0.1.81, server: , request: "GET /event/set?app_id=test&app_key=IGQ6m4Rd8e7fldIR&user_id=test&event_type=view&label=view_top HTTP/1.1", host: "xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com" 

[ec2-user@ip-10-0-1-9 ~]$ netstat -na | grep -c 6379
26968

[ec2-user@ip-10-0-1-9 ~]$ sudo sysctl -a | grep port
net.ipv4.ip_local_port_range = 32768    61000

接続ポートを使い果たしているので範囲拡張

[ec2-user@ip-10-0-1-9 ~]$ sudo vi /etc/sysctl.conf 
net.ipv4.ip_local_port_range = 2000 65000

[ec2-user@ip-10-0-1-9 ~]$ sudo sysctl -p /etc/sysctl.conf

[ec2-user@ip-10-0-1-9 ~]$ sudo sysctl -a | grep  ip_local_port_range
net.ipv4.ip_local_port_range = 2000    65000

[ec2-user@ip-10-0-1-9 ~]$ netstat -na | grep -c 6379
30788

APIのエラーがなくなっていることを確認

#5 山本 義治ほぼ9年前に更新

テスト2

スレッド数:100
スレッドグループをイベント別に分ける

Jmeter-Master x 1
Jmeter-Slave x 2

jmeter.log

summary + 135200 in    30s = 4507.0/s Avg:   221 Min:     4 Max:  3336 Err: 46227 (34.19%) Active: 1000 Started: 1000 Finished: 0
summary = 3131603 in   727s = 4308.8/s Avg:   221 Min:     1 Max:  4493 Err: 1060225 (33.86%)
結果の概要を生成 + 135300 in    30s = 4507.6/s Avg:   221 Min:     4 Max:  3336 Err: 46150 (34.11%) Active: 1000 Started: 1000 Finished: 0
結果の概要を生成 = 3131211 in   727s = 4308.0/s Avg:   221 Min:     1 Max:  4493 Err: 1059990 (33.85%)

xg-jmeter-test.log

1458645595158,1067,クリック,403,Forbidden,クリック 1-20,text,false,1662,100,500,339
1458645596912,31,インストール,200,OK,インストール 2-38,text,true,561,100,500,31
1458645596879,69,インストール-イベント,403,Forbidden,インストール-イベント 3-98,text,false,232,100,500,69
1458645596682,277,起動-イベント,200,OK,起動-イベント 4-24,text,true,199,100,500,277
1458645596764,159,トップビュー-イベント,200,OK,トップビュー-イベント 5-96,text,true,216,100,500,159

ELB: 274681req/m
API: cpu99%
API-latency: 0.4s
Redis-Master: cpu64%
Redis-Slave: cpu1.9%

auto scaling後

[ec2-user@ip-10-0-1-70 ~]$ tail -f /usr/local/openresty/nginx/logs/error.log

2016/03/22 21:01:09 [error] 2633#0: *13168990 [lua] event_set.lua:125: failed to connect to redis: timeout, client: 10.0.0.167, server: , request: "GET /event/set?app_id=test&app_key=IGQ6m4Rd8e7fldIR&user_id=test&event_type=launch&label=launch HTTP/1.1", host: "xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com" 

[ec2-user@ip-10-0-0-27 ~]$ tail -f /usr/local/openresty/nginx/logs/error.log

2016/03/22 21:02:16 [error] 2613#0: *493576 [lua] event_set.lua:125: failed to connect to redis: timeout, client: 10.0.0.167, server: , request: "GET /event/set?app_id=test&app_key=IGQ6m4Rd8e7fldIR&user_id=test&event_type=view&label=view_top HTTP/1.1", host: "xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com" 
2016/03/22 21:02:16 [error] 2613#0: *458410 lua tcp socket connect timed out, client: 10.0.0.167, server: , request: "GET /click?app_id=test&campaign_id=AMSWws HTTP/1.1", host: "xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com" 

timeoutが頻発

ELB: 124681req/m
API: cpu25%
API-latency: 0.44s
Redis-Master: cpu15%
Redis-Slave: cpu0.9%

リクエスト数も半減

http://hackerslab.aktsk.jp/technology/aws-elasticcache-timeout-parameter/

aws elasticache redisのtimeoutはデフォルト0(無期限)になっている

パラメータグループ作成後、クラスターグループのパラメータグループ変更
timeout:0→3600
※redisサーバーが再起動されるので注意

2016/03/22 21:32:25 [error] 2613#0: *2228878 [lua] event_set.lua:125: failed to connect to redis: timeout, client: 10.0.0.167, server: , request: "GET /event/set?app_id=test&app_key=IGQ6m4Rd8e7fldIR&user_id=test&event_type=launch&label=launch HTTP/1.1", host: "xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com" 

timeoutエラーがなくならない。一度jmeterサーバー再起動
redisのサーバーのIPが変更されている
エラーがなくなったこと確認

auto scaling発動後、再度timeoutエラー発生

2016/03/22 22:00:16 [error] 2634#0: *18842067 lua tcp socket connect timed out, client: 10.0.1.233, server: , request: "GET /event/set?app_id=test&app_key=IGQ6m4Rd8e7fldIR&user_id=test&event_type=launch&label=launch HTTP/1.1", host: "xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com" 

tcp-timeout設定確認する
https://www.pandastrike.com/posts/20150908-aws-elasticache-redis

他の形式にエクスポート: Atom PDF