簡単な質問: 私の tomcat サーバーは 850 MB/秒に達しています。これは論理的ですか?
Tomcat のインストールをベンチマークしようとしています。サーバーは、毎秒 ~2.5 GBytes/S (30 gBits) の速度に到達したいバックエンド ストレージ サーバーです。これはインターネットサーバーではありません。これは、複数のファイバー カードを備えたクラウド コンピューティング ノードです。理論上の限界にできるだけ近づくことに興味があります。
実際の S/W でベンチマークを行ったとき、私のパフォーマンスは標準以下でした。「ダミー」サーブレット(以下)でTomcatをテストしました。私は 850 MBytes/s に達しました。しかし、私の CPU は 30% しか使用されていません。これは論理的ですか?
テストにapache abを使用しています:
ab -c 100 -n 10000 localhost:8080/tcbench/tcbench
私のセットアップは、32GBのメモリを搭載したE31260L XEON、Ubuntu 12.04、およびJDK 7(デフォルトの構成ファイル)を搭載したOracale tomcat7です。
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class tcbench extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/text;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.print(testBuffer);
} finally {
out.close();
}
}
static char[] testBuffer=new char[128*1024];
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}