機能追加 #733
AWS負荷テスト検証
ステータス: | 新規 | 開始日: | 2016/03/18 | |
---|---|---|---|---|
優先度: | 通常 | 期日: | ||
担当者: | 山本 義治 | 進捗 %: | 0% | |
カテゴリ: | サーバ環境構築 | 作業時間の記録: | - | |
対象バージョン: | - |
履歴
#1 山本 義治 がほぼ9年前に更新
クライアント管理画面
http://xg-lb-1800740380.ap-northeast-1.elb.amazonaws.com/
ID: test@test.com
PASS: testtest
クリック
http://xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com/click?app_id=test&campaign_id=AMSWws
インストール
http://xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com/event/set?app_id=test&app_key=IGQ6m4Rd8e7fldIR&user_id=test&event_type=install
http://xg-api-lb-1846323725.ap-northeast-1.elb.amazonaws.com/install?app_id=test&app_key=IGQ6m4Rd8e7fldIR&user_id=test
#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