本番で使いそうなサーバーでCubbyとT2 Frameworkを試してみた

ECサイトの本番環境で使いそうなサーバーが評価機で手に入ったので、使う候補のフレームワークのパフォーマンスを量ってみた。気にしてるのは主にスループット。レイテンシは揺らぎが大きそうだから。

環境

  • Xeon 2.33GHz Quad Core 6144 KB x 2
  • 4G MEM
Apache
Timeout 300
KeepAlive Off

    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadsPerChild      25
    MaxRequestsPerChild   0

Tomcat
maxThreads="200" minSpareThreads="25" maxSpareThreads="75" acceptCount="100" connectionTimeout="20000"
CATALINA_OPTS="-server -Xmx1024M -Xms1024M
 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled
 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/tomcat/logs/gc.log
 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home"

ApacheTomcatも設定ファイルはデフォルトな感じで、その辺のチューニングは全然してない。だから、もうちょっと引っ張れるかも。あと、TCPのTIME_WAITもデフォルトのまま。だから、netstat -aすると大変なことになる。

テストツール

abで。
Requests per second を重視して、スループットがどれくらいでるかをみる。
同時リクエストは100〜450くらいのあいだで、最大リクエストは30000〜50000くらいまで。50000まで行ければ試す感じ。同時リクエストは頭打ちになるところまで試す。

思ったこと

  • 最近のサーバーはすごい
  • AJPのオーバーヘッドは気にしなくていいレベルみたい
3回くらいくりかえした平均のRequests per second

同時リクエストを100〜450くらいまでいろいろ試して、一番成績がよかったところで3回くらい繰り返した結果が、こんな感じ。

静的なファイルをapacheが返す 12000くらい
TomcatJSPをリクエスト 5500くらい
AJPで繋いでJSPをリクエスト 5500くらい
CubbyのExampleのhelloをリクエスト 1200くらい
T2 FrameworkのExamplesのhelloをリクエスト 4500くらい

T2 Frameworkが早いけど、heapにガンガン積みまくってheapを使い切っちゃう。Lucyの問題かなー。Guiceとの組み合わせで試してみるか。
あと、一回だけ、org.t2framework.lucy.exception.TooManyRegistrationException ってエラーがでた。
スタックトレースは残しとくの忘れてた。

あとあと、

org.t2framework.lucy.exception.TooManyRegistrationException: [ELucyCore0005]interface javax.servlet.http.HttpServletRequestというキーで複数のコンポーネントが登録されています.

というエラーがログにたくさん。作りの問題かな。ちゃんと気をつけて作れば大丈夫?


あとは、WicketとClickも試してみよう。