SlideShare a Scribd company logo
1 of 11
abコマンドを使った ウェブアプリケーションのパフォーマンス計測など @hidenorigoto / 後藤 秀宣
ab = Apache Bench Apache に付属のベンチマークツール(コマンド) ・特定の URL に関するパフォーマンスを手軽に計測できる 参考 URL ・ http://www.atmarkit.co.jp/flinux/rensai/apache15/apache15b.html XAMPP などを Windows にインストールすると、 Windows 上からも利用可能 abコマンドとは
abコマンドの使用例 ab -c 40 -n 40 http://blog.innx.co.jp/
abコマンドの実行結果(1) Server Software:  Apache/2.2.3 Server Hostname:  blog.innx.co.jp Server Port:  80 Document Path:  / Document Length:  47837 bytes サーバーのバージョンやレスポンスの情報
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
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 はほぼゼロ
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 倍
ウェブアプリケーションのチューニング 1.  プログラムの処理時間を短くする  ->(様々なノウハウ)  ->サーバー側ページキャッシュ 2.  プログラムへのアクセス回数を減らす  ->クライアント側ページキャッシュ 3.  画像ファイルなどのリソースへのリクエストを減らす  -> CSS スプライト、クライアント側キャッシュ  
Apache側の設定のポイント(1) httpd.conf <IfModule prefork.c> StartServers  8 MinSpareServers  5 MaxSpareServers  20 ServerLimit  256 MaxClients  256 MaxRequestsPerChild  4000 </IfModule> 上記はデフォルト設定。 MaxClients(=ServerLimit) は許可するメモリ量に応じて設定する。 プロセスを頻繁に初期化したい場合は MaxRequestsPerChild を小さくする。( PHP のメモリリーク対策など)
Apache側の設定のポイント(2) mod_expires http://httpd.apache.org/docs/2.0/mod/mod_expires.html 画像ファイルなどのキャッシュ期間を制御 ->サーバーへのリクエストが減るだけでなく、クライアント側のページ表示速度も改善する場合がある
プログラム側での対応 ・ APC ( PHP の場合) ・データベース処理の最適化 ・サーバー側ページキャッシュ  ->少なくともファイルキャッシュ、頻度の高いページはメモリキャッシュ PHP の場合 APC をインストールすれば、メモリ KVS がすぐに使える memcached でも OK 1.URL をキーにしてページデータを格納 2. キー( URL )に対応するページデータがあれば、取得して返す

More Related Content

What's hot

誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
itamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningitamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningYuto Ogi
 
Webアプリケーションの無停止稼働
Webアプリケーションの無停止稼働Webアプリケーションの無停止稼働
Webアプリケーションの無停止稼働Kazuho Oku
 
IPv6 Hackathon in 新潟
IPv6 Hackathon in 新潟IPv6 Hackathon in 新潟
IPv6 Hackathon in 新潟hayajo Imai
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術Masahiro Nagano
 
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会tama200x Kobayashi
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺Shogo Kawahara
 
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作ったDMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作ったYuto Ogi
 
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡Aya Komuro
 
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうTaiji INOUE
 
Aerospike紹介-LT用
Aerospike紹介-LT用Aerospike紹介-LT用
Aerospike紹介-LT用Joongjin Bae
 
Bloopのちょっぱやコンパイルで開発効率を上げたい
Bloopのちょっぱやコンパイルで開発効率を上げたいBloopのちょっぱやコンパイルで開発効率を上げたい
Bloopのちょっぱやコンパイルで開発効率を上げたいkeisunagawa
 
XOOPS Cube Conference 2012 Developer Workshop 2
XOOPS Cube Conference 2012 Developer Workshop 2XOOPS Cube Conference 2012 Developer Workshop 2
XOOPS Cube Conference 2012 Developer Workshop 2Hikawa Kilica
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP betterKazuho Oku
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界Yuuki Takezawa
 

What's hot (20)

誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
itamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningitamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioning
 
Webアプリケーションの無停止稼働
Webアプリケーションの無停止稼働Webアプリケーションの無停止稼働
Webアプリケーションの無停止稼働
 
GGEasyMonitor技術情報
GGEasyMonitor技術情報GGEasyMonitor技術情報
GGEasyMonitor技術情報
 
IPv6 Hackathon in 新潟
IPv6 Hackathon in 新潟IPv6 Hackathon in 新潟
IPv6 Hackathon in 新潟
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
 
Let's make your CDN with RUBY
Let's make your CDN with RUBYLet's make your CDN with RUBY
Let's make your CDN with RUBY
 
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
Web基礎
Web基礎Web基礎
Web基礎
 
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作ったDMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
 
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
 
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
 
Aerospike紹介-LT用
Aerospike紹介-LT用Aerospike紹介-LT用
Aerospike紹介-LT用
 
Bloopのちょっぱやコンパイルで開発効率を上げたい
Bloopのちょっぱやコンパイルで開発効率を上げたいBloopのちょっぱやコンパイルで開発効率を上げたい
Bloopのちょっぱやコンパイルで開発効率を上げたい
 
seccamp21z4 yamaguchi
seccamp21z4 yamaguchiseccamp21z4 yamaguchi
seccamp21z4 yamaguchi
 
XOOPS Cube Conference 2012 Developer Workshop 2
XOOPS Cube Conference 2012 Developer Workshop 2XOOPS Cube Conference 2012 Developer Workshop 2
XOOPS Cube Conference 2012 Developer Workshop 2
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP better
 
MHA, Murakumo & Me
MHA, Murakumo & MeMHA, Murakumo & Me
MHA, Murakumo & Me
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
 

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

第2回勉強会資料 岩本(配布用)
第2回勉強会資料 岩本(配布用)第2回勉強会資料 岩本(配布用)
第2回勉強会資料 岩本(配布用)Takahisa Iwamoto
 
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)ひとし あまの
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらインターネット株式会社
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますfukuoka.ex
 
PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -Masaki Takeda
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発Tusyoshi Matsuzaki
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceKazuho Oku
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」fukuoka.ex
 
SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターMasayuki Ozawa
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Kikunaga Taishi
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)Kentaro Ebisawa
 

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

第2回勉強会資料 岩本(配布用)
第2回勉強会資料 岩本(配布用)第2回勉強会資料 岩本(配布用)
第2回勉強会資料 岩本(配布用)
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
Apache Module
Apache ModuleApache Module
Apache Module
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 
PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンター
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 

More from Hidenori Goto

Excelで勤務時間合計2
Excelで勤務時間合計2Excelで勤務時間合計2
Excelで勤務時間合計2Hidenori Goto
 
Excelで勤務時間合計
Excelで勤務時間合計Excelで勤務時間合計
Excelで勤務時間合計Hidenori Goto
 
Symfony2 3rd-Party Bundles
Symfony2 3rd-Party BundlesSymfony2 3rd-Party Bundles
Symfony2 3rd-Party BundlesHidenori Goto
 
Symfony2 intro-20111204
Symfony2 intro-20111204Symfony2 intro-20111204
Symfony2 intro-20111204Hidenori Goto
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaHidenori Goto
 
Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)Hidenori Goto
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Hidenori Goto
 
Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)Hidenori Goto
 
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Hidenori Goto
 
Symfony2 introduction
Symfony2 introductionSymfony2 introduction
Symfony2 introductionHidenori Goto
 
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeHidenori Goto
 
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話Hidenori Goto
 
HTC Desireについて
HTC DesireについてHTC Desireについて
HTC DesireについてHidenori Goto
 

More from Hidenori Goto (20)

Excelで勤務時間合計2
Excelで勤務時間合計2Excelで勤務時間合計2
Excelで勤務時間合計2
 
Excelで勤務時間合計
Excelで勤務時間合計Excelで勤務時間合計
Excelで勤務時間合計
 
Symfony2 3rd-Party Bundles
Symfony2 3rd-Party BundlesSymfony2 3rd-Party Bundles
Symfony2 3rd-Party Bundles
 
Symfony2 intro-20111204
Symfony2 intro-20111204Symfony2 intro-20111204
Symfony2 intro-20111204
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
 
翻訳について
翻訳について翻訳について
翻訳について
 
Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)
 
Symfony2 behat-bdd
Symfony2 behat-bddSymfony2 behat-bdd
Symfony2 behat-bdd
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)
 
Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)Symfony2 workshop-1 (nagoya 2011/2/10)
Symfony2 workshop-1 (nagoya 2011/2/10)
 
Symfony2 workshop-2
Symfony2 workshop-2Symfony2 workshop-2
Symfony2 workshop-2
 
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
 
Symfony2 workshop-1
Symfony2 workshop-1Symfony2 workshop-1
Symfony2 workshop-1
 
Symfony2 introduction
Symfony2 introductionSymfony2 introduction
Symfony2 introduction
 
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source Code
 
Orm Designer
Orm DesignerOrm Designer
Orm Designer
 
Symfony tdd
Symfony tddSymfony tdd
Symfony tdd
 
Symfony2 caching
Symfony2 cachingSymfony2 caching
Symfony2 caching
 
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
 
HTC Desireについて
HTC DesireについてHTC Desireについて
HTC Desireについて
 

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

  • 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 )に対応するページデータがあれば、取得して返す