さくら VPS 1G の CentOS に Nginx + Gunicorn 環境を構築してベンチマークとってみた

はじめに

前々回、前回と、Apache + mod_wsgiApache + Gunicorn のベンチマークをとってみた。

ここまでは前哨戦。次がメイン。最近多く採用されている、 Nginx + Gunicorn の構成でベンチマークをとってみたいと思う。

nginx をインストール

Yum リポジトリにパッケージがあったので、それを利用する。バージョンは 1.0.14。

sudo yum install -y nginx

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 をコンパイルし直す必要もあるのでやめておく。