はじめに
前々回、前回と、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 をコンパイルし直す必要もあるのでやめておく。