When it’s ready.

出来るまで出来ない

Djangoのrunserverパフォーマンス、UbuntuとOSXでの違い

DjangoでCSVファイルをロードして、Jsonで返すだけの簡単なスクリプトを書いた。
クライアントも5台くらいなので、開発サーバで実行させたい。実行させるOSが、Ubuntu9.04とOSX Server10.5.8どちらがいいかわかんないので、abしてみた。 悩ましい結果となった。

ab -c 1 -n 500 の場合

Requests per second: 46.37 [#/sec] (mean)
Time per request: 21.565 [ms] (mean)
Time per request: 21.565 [ms] (mean, across all concurrent requests)
Transfer rate: 1174.43 [Kbytes/sec] received

  • osx

Requests per second: 57.66 [#/sec] (mean)
Time per request: 17.344 [ms] (mean)
Time per request: 17.344 [ms] (mean, across all concurrent requests)
Transfer rate: 1460.23 [Kbytes/sec] received

両OSとも、取りこぼし(Failed requests)無し。osxの方が1.2倍くらい速い。今回ubuntuは、OSX Server上のVMで動作しているので、そんな物かと思っていた。

ab -c 5 -n 500 の場合

Requests per second: 49.64 [#/sec] (mean)
Time per request: 100.729 [ms] (mean)
Time per request: 20.146 [ms] (mean, across all concurrent requests)
Transfer rate: 1257.15 [Kbytes/sec] received

  • osx

Requests per second: 70.86 [#/sec] (mean)
Time per request: 70.565 [ms] (mean)
Time per request: 14.113 [ms] (mean, across all concurrent requests)
Transfer rate: 1794.52 [Kbytes/sec] received

さっきよりも若干osxが速くなってる、osx優勢。この段階では、osxで動作をさせようと思っていた。
予定されるクライアント台数の上限は5台だが、リクエストが多重に出るかも知れないので、同時接続数を増やしてテストしてみた。

ab -c 10 -n 500 の場合

Requests per second: 22.68 [#/sec] (mean)
Time per request: 440.888 [ms] (mean)
Time per request: 44.089 [ms] (mean, across all concurrent requests)
Transfer rate: 574.44 [Kbytes/sec] received

  • osx

apr_socket_recv: Connection reset by peer (54)

ubuntuのスピードががくっと落ちてる。がしかし、osxはそれどころでなくテストが通らない。同時接続数が6以上だと開発サーバーは動いてくれない。ここまで、速かっただけに残念すぎる結果。
ubuntuだと同時接続20にしても、Failedが発生しないので今回はubuntuが採用。

OSによって、大きな差が出るとは思ってなかったので勉強になった。

普通にデプロイしなさい>自分