ユーザ用ツール

サイト用ツール


jmeter:stress_test

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
jmeter:stress_test [2015/08/27 01:06] clownclownjmeter:stress_test [2025/02/16 13:53] (現在) – 外部編集 127.0.0.1
行 3: 行 3:
 ===== 負荷テストの目的の明確化 ===== ===== 負荷テストの目的の明確化 =====
  
-  * 各種設定に問題がないか確認する\\ 基本的な動作が問題ないこと、明らかにおかしなスループットなどが計測されないこと、を確認する。\\   * OSの設定\\ * httpサービスなど、ミドルウェアの基本設定\\ * DBのスロークエリ、インデックスなどの設定\\ etc+  * 各種設定に問題がないか確認する\\ 基本的な動作が問題ないこと、明らかにおかしなスループットなどが計測されないこと、を確認する。 
 +   * OSの設定 
 +   * httpサービスなど、ミドルウェアの基本設定 
 +   * DBのスロークエリ、インデックスなどの設定 
 +   etc
  
   * 現在の構成でのスループットの上限を探る\\ 本番を想定したある程度の構築を行った段階で負荷テストを行い、「ここまでは大丈夫」という値を探す。   * 現在の構成でのスループットの上限を探る\\ 本番を想定したある程度の構築を行った段階で負荷テストを行い、「ここまでは大丈夫」という値を探す。
  
-  * スケールアップ(スペックアップ)、スケールアウト(サーバ台数増加)対応\\ いざ負荷が高くなったときにスケールアップ(スペックアップ)、スケールアウト(サーバ台数増加)で負荷軽減が可能か(負荷が移動するか)を確認する。+  * スケールアップ(スペックアップ)、スケールアウト(サーバ台数増加)対応 
 +いざ負荷が高くなったときにスケールアップ(スペックアップ)、スケールアウト(サーバ台数増加)で負荷軽減が可能か(負荷が移動するか)を確認する。
  
 ===== 負荷試験 ===== ===== 負荷試験 =====
  
-  * 静的ページへアクセスした際のスループットを取得\\ 一般的に数千のスループットが出るはずなので、出ない場合は設定を見直す。\\ <code>ab -c XXX -n XXX http://localhost/</code>+  * 静的ページへアクセスした際のスループットを取得 
 +一般的に数千のスループットが出るはずなので、出ない場合は設定を見直す。
  
-  * フレームワークを利用したシンプルなページ(Hello World的なもの)へアクセスした際のスループットを取得\\ この数値がフレームワーク使用時の最大スループットとなる。\\ <code>ab -c XXX -n XXX http://localhost/hello/</code>+<code>ab -c XXX -n XXX http://localhost/</code> 
 + 
 +  * フレームワークを利用したシンプルなページ(Hello World的なもの)へアクセスした際のスループットを取得 
 +この数値がフレームワーク使用時の最大スループットとなる。 
 + 
 +<code>ab -c XXX -n XXX http://localhost/hello/</code>
  
 ※注意 ※注意
行 20: 行 31:
 複数ユーザのアクセスを確認するために、jMeterなどのツールでuseridを変数にしてシナリオ実行。 複数ユーザのアクセスを確認するために、jMeterなどのツールでuseridを変数にしてシナリオ実行。
  
-  * ユーザアクセスの多いページへアクセスした際のスループットを取得する\\ e.g. マイページ\\ <code>ab -c XXX -n XXX http://localhost/mypage/userid=XXXXX</code>+  * ユーザアクセスの多いページへアクセスした際のスループットを取得する 
 +e.g. マイページ
  
-  * (主に参照系の)DBアクセスの多いページへアクセスした際のスループットを取得する\\ e.g. デッキ作成(カード一覧)、クエスト一覧\\ <code>ab -c XXX -n XXX http://localhost/mydeck/userid=XXXXX</code>+<code>ab -c XXX -n XXX http://localhost/mypage/userid=XXXXX</code>
  
-  * (主に更新系の)DBアクセスの多いページへアクセスした際のスループットを取得する\\ e.g. ゲームリザルト\\ <code>ab -c XXX -n XXX http://localhost/resultk/userid=XXXXX</code>+  * (主に参照系の)DBアクセスの多いページへアクセスした際のスループットを取得する 
 +e.g. デッキ作成(カード一覧)、クエスト一覧 
 + 
 +<code>ab -c XXX -n XXX http://localhost/mydeck/userid=XXXXX</code> 
 + 
 +  * (主に更新系の)DBアクセスの多いページへアクセスした際のスループットを取得する 
 +e.g. ゲームリザルト 
 + 
 +<code>ab -c XXX -n XXX http://localhost/resultk/userid=XXXXX</code>
  
 3~5にて。スループットの極端な低下、スロークエリ、インデックスの使われていないクエリ、LoadAverageの高騰などを確認する。 3~5にて。スループットの極端な低下、スロークエリ、インデックスの使われていないクエリ、LoadAverageの高騰などを確認する。
行 48: 行 68:
 ===== 関連しそうなカーネル設定のメモ ===== ===== 関連しそうなカーネル設定のメモ =====
  
-  * irqbalance\\ <code>+  * irqbalance 
 + 
 +<code>
 # yum -y install irqbalance # yum -y install irqbalance
 # service irqbalance start # service irqbalance start
-# chkconfig irqbalance on</code>+# chkconfig irqbalance on 
 +</code>
  
-  * RPS/RFS\\ <code>+  * RPS/RFS 
 + 
 +<code>
 echo "f" > /sys/class/net/eth0/queues/rx-0/rps_cpus echo "f" > /sys/class/net/eth0/queues/rx-0/rps_cpus
 echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
行 59: 行 84:
 </code> </code>
  
-  * sysctl\\ <code>+  * sysctl 
 + 
 +<code>
 vm.swappiness=0 vm.swappiness=0
 net.core.somaxconn=4096 net.core.somaxconn=4096
行 81: 行 108:
  
 旧来のカードバトル型のソーシャルゲームでは1ユーザ、1日あたり350~750PV 旧来のカードバトル型のソーシャルゲームでは1ユーザ、1日あたり350~750PV
 +
 +> エンジニアカフェ× ドリコム技術勉強会 ~月間50億PVのソーシャルゲームを支える技術
 +> http://yamasaki0.hatenablog.com/entry/2012/02/16/230000
 +
 アプリ型の場合、サーバーアクセスの無い画面/処理もあるので、少し少ない数値を指針にする。 アプリ型の場合、サーバーアクセスの無い画面/処理もあるので、少し少ない数値を指針にする。
  
-スループット(1秒間に捌く数) +スループット(1秒間に捌く数) 
-PV x DAU / 24h / 60min / 60sec+PV x DAU / 24h / 60min / 60sec
  
 e.g. e.g.
行 92: 行 123:
 ⇒ 500 * 100,000 / 24 / 60 / 60 ≒ 578.7 req / sec ⇒ 500 * 100,000 / 24 / 60 / 60 ≒ 578.7 req / sec
  
-ピーク時の平均を1.5倍とする+ピーク時の平均を仮に1.5倍とする
 ⇒ 578.7 * 1.5 ≒ 868 req / sec ⇒ 578.7 * 1.5 ≒ 868 req / sec
  
jmeter/stress_test.1440637593.txt.gz · 最終更新: 2025/02/16 13:50 (外部編集)