re: webserver benchmarking

23
Re: WebServer BenchMarking 2016/1/13 PHP BLT #2 Ryo Tomidokoro

Upload: ryo-tomidokoro

Post on 09-Jan-2017

2.466 views

Category:

Software


0 download

TRANSCRIPT

Re: WebServer BenchMarking

2016/1/13

PHP BLT #2

Ryo Tomidokoro

About me

Ryo Tomidokoro (@hanhan1978)

Web Application Engineer

過日・・・• PHPとWebサーバの構成について、ベンチマークを取ってブログに書いた。

PHP Advent Calendar 2015

内容のおさらい• PHPとWebサーバの構成を4通り提案• サンプルのウェブアプリを用意• siegeを使って、ベンチマーク

構成 1

PHP-FPMNginxFastCGI

• PHPファイルのみ PHP-FPMに処理させるので効率が良い。

静的ファイルは Nginx が処理

構成 2

mod_phpprefork

• Apacheの各プロセスがmod_phpを読込• 静的ファイルも PHPファイルも同様にプロセスが消費される

Apache

構成 3

mod_phpNginxproxy

• PHPファイルのみ Apache+mod_phpが処理• 前段の Nginxで静的ファイルを片付ける

静的ファイルは Nginx が処理

Apache

構成 4

PHP-FPMFastCGI

• 構成 1の Apache版• 同様に効率の良いリソース消費が期待できそう

Apachempm_event

静的ファイルは Apache が処理

こんな Web アプリ (Laravel)

DB 接続あり、ページ内に画像が 10 枚

ベンチマーカーsiege -b -t 60sec

siege のベンチマークオプションをつけて、 60 秒間での処理リクエスト数で性能を計測

事前の予想Nginx PHP-FPMApache mod_phpNginx with Apache mod_phpApache PHP-FPM

1 位4 位3 位2 位

結果

構成 1 と 3 が好成績

その時の考察

あれはウソだ

ブログ投稿後・・・• 胸騒ぎがして何回かやり直してみると、結果が安定しない。(滝汗• 眠れない・・・

• 結果集計・ベンチマークをスクリプト化• Wifiオフ、余計なプロセスは全て落とす

改善活動

安定してきた結果Nginx PHP-FPMApache mod_phpNginx with Apache mod_phpApache PHP-FPM

20420210552216120697

この数値は再現性が高い↑

60sec でのリクエスト処理数

どの構成でも性能差がほとんどない。

目的と方法を間違えていた• 並列リクエストに対する限界性能をチェックしたかった。• siegeのベンチマークオプションはシングルスレッド• 測っていたのはシングルスレッドでの応答速度

どの構成でも資源に余裕がある状態大差は出ない。

やり直し• siegeのベンチマークオプションは取りやめ• 並列リクエストを大量に送りつけて、性能が劣化するまで限界を攻めてみる。

並列 250 * 40 回 = 10000 リクエスト

再ベンチ結果

Nginx PHP-FPMApache mod_phpNginx with Apache mod_phpApache PHP-FPM

37.14221.9342.1856.53

リクエスト完了までにかかった秒数

詳細な結果はブログに表で貼っておきます。

再度の考察• Nginx + PHP-FPMは、まだまだイケる• Apache mod_phpを使う場合は、よく考えて・・・• mpm_eventは設定いじると結構がんばるらしい

反省• 計測したい性能は何?• ベンチマークツールの使い方あってる?• 締切に追い立てられるてベンチするとろくなこと無い

END