はじめに
前々回、前回と、Apache + mod_wsgi と Apache + Gunicorn のベンチマークをとってみた。
- さくら VPS 1G の CentOS に Python と Apache と mod_wsgi をインストールしてベンチマークとってみた - present
- さくら VPS 1G の CentOS で Apache + gunicorn のベンチマークをとってみた - present
ここまでは前哨戦。次がメイン。最近多く採用されている、 Nginx + Gunicorn の構成でベンチマークをとってみたいと思う。
nginx の設定
Vim で /etc/nginx/nginx.conf を編集する。
worker_processes 5;
...
http {
...
keepalive_timeout 0;
...
}Worker プロセス数を 5 に増やした。あと、Apache でベンチとったとき無効にしてたので、Nginx でも KeepAlive を無効にした。
次に Vim で /etc/nginx/conf/default.conf を編集する。
server {
...
location /gunicorn {
proxy_pass http://127.0.0.1:8000;
}
}Gunicorn で動かしている Web アプリにリクエストを渡すようにしている。
Gunicorn をデーモンで実行
Apache + Gunicorn のとき使った hello.py を今回も使うことにする。
sudo gunicorn -w 60 -D hello:application
Worker 数を 60 にしている。
ベンチマークをとってみる
同時接続数50固定でリクエスト数を増やしてテスト
| リクエスト数 | リクエスト/秒 |
|---|---|
| 1000 | 38.70 |
| 2000 | 41.46 |
| 4000 | 41.59 |
| 6000 | 42.25 |
| 8000 | 42.56 |
| 10000 | 42.69 |
リクエスト数1000固定で同時接続数を増やしてテスト
| 同時接続数 | リクエスト/秒 |
|---|---|
| 10 | 37.98 |
| 50 | 40.51 |
| 100 | 38.07 |
| 150 | 37.25 |
| 200 | 37.42 |
| 300 | 36.93 |
| 400 | 37.65 |
メモリ使用量をチェック
total used free shared buffers cached Mem: 1020688 625440 395248 0 49140 298396 -/+ buffers/cache: 277904 742784 Swap: 2096472 0 2096472 [nakamura@www8238ue]/etc/nginx/conf.d%
まとめ
Apache + Gunicorn と比べて、ベンチマークの結果は…たいして変わってないな。メモリ使用量は 200MB ほど少なかった。200MBって結構差が出たな。Nginx の方が Apache よりメモリ使用量が少ない、というのを実感した。Web サービスは、Nginx + Gunicorn の構成で行こうと思う。
あと、ベンチマークは今回で一区切りにしておく。Nginx にも mod_wsgi はあるけど、リポジトリを見た感じだと、だいぶ更新されていないみたいだった。1.0.14 では動かなさそう。Nginx をコンパイルし直す必要もあるのでやめておく。