Abコマンドを使ったウェブアプリケーションのパフォーマンス計測

  • 3,780 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,780
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
12
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. abコマンドを使った ウェブアプリケーションのパフォーマンス計測など @hidenorigoto / 後藤 秀宣
  • 2. ab = Apache Bench Apache に付属のベンチマークツール(コマンド) ・特定の URL に関するパフォーマンスを手軽に計測できる 参考 URL ・ http://www.atmarkit.co.jp/flinux/rensai/apache15/apache15b.html XAMPP などを Windows にインストールすると、 Windows 上からも利用可能 abコマンドとは
  • 3. abコマンドの使用例 ab -c 40 -n 40 http://blog.innx.co.jp/
  • 4. abコマンドの実行結果(1) Server Software: Apache/2.2.3 Server Hostname: blog.innx.co.jp Server Port: 80 Document Path: / Document Length: 47837 bytes サーバーのバージョンやレスポンスの情報
  • 5. abコマンドの実行結果(2) Concurrency Level: 40 Time taken for tests: 0.957 seconds Complete requests: 40 Failed requests: 0 Write errors: 0 Total transferred: 1926080 bytes HTML transferred: 1913480 bytes Requests per second: 41.79 [#/sec] (mean) Time per request: 957.055 [ms] (mean) Time per request: 23.926 [ms] (mean, across all concurrent request Transfer rate: 1965.34 [Kbytes/sec] received
  • 6. abコマンドの実行結果(3) Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.5 1 1 Processing: 182 597 225.2 623 932 Waiting: 109 556 229.8 595 916 Total: 183 597 225.1 623 932 この例では LAN 内で実行しているので Connect はほぼゼロ
  • 7. abコマンドの結果、その他の参考値 ローカル PC 上の Apache スタティックなページ Requests per second: 5681.10 [#/sec] (mean) phpinfo だけのページ Requests per second: 1171.15 [#/sec] (mean) cakephp ブログチュートリアル Requests per second: 47.08 [#/sec] (mean) シンプルな PHP でスタティックなページの 5 倍 DB 接続のある複雑な PHP で 100 ~ 200 倍
  • 8. ウェブアプリケーションのチューニング 1. プログラムの処理時間を短くする  ->(様々なノウハウ)  ->サーバー側ページキャッシュ 2. プログラムへのアクセス回数を減らす  ->クライアント側ページキャッシュ 3. 画像ファイルなどのリソースへのリクエストを減らす  -> CSS スプライト、クライアント側キャッシュ  
  • 9. Apache側の設定のポイント(1) httpd.conf <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> 上記はデフォルト設定。 MaxClients(=ServerLimit) は許可するメモリ量に応じて設定する。 プロセスを頻繁に初期化したい場合は MaxRequestsPerChild を小さくする。( PHP のメモリリーク対策など)
  • 10. Apache側の設定のポイント(2) mod_expires http://httpd.apache.org/docs/2.0/mod/mod_expires.html 画像ファイルなどのキャッシュ期間を制御 ->サーバーへのリクエストが減るだけでなく、クライアント側のページ表示速度も改善する場合がある
  • 11. プログラム側での対応 ・ APC ( PHP の場合) ・データベース処理の最適化 ・サーバー側ページキャッシュ  ->少なくともファイルキャッシュ、頻度の高いページはメモリキャッシュ PHP の場合 APC をインストールすれば、メモリ KVS がすぐに使える memcached でも OK 1.URL をキーにしてページデータを格納 2. キー( URL )に対応するページデータがあれば、取得して返す