我正在使用Virtualbox 4.1.8 虚拟化的 Debian Squeeze 6.0.4 x64 上运行的小型 Java EE 1.7.0 / Tomcat 7.0.26 应用程序进行 HTTP 负载测试基准测试(使用Apache Benchmark和Siege)。计算机主机是 Ubuntu 11.10 x64。
我在 Tomcat 中修改了这些参数server.xml
:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="200000"
redirectPort="8443"
acceptCount="2000"
maxThreads="150"
minSpareThreads="50" />
Run Code Online (Sandbox Code Playgroud)
在服务器上执行的应用程序大约需要 300 毫秒。
这个应用程序运行良好,直到达到一定数量的并发连接,例如:
ab -n 500 -c 150 http://xx.xx.xx.xx:8080/myapp/
ab -n 1000 -c 50 http://xx.xx.xx.xx:8080/myapp/
siege -b -c 100 -r 20 http://xx.xx.xx.xx:8080/myapp/
Run Code Online (Sandbox Code Playgroud)
socket connection timed out
发生了很多事情,这使主机处理器完全过载(但 VM 内的 CPU 负载是正常的)。
htop
在主机上执行一个操作,我可以看到 Virtualbox 进程在 300% CPU 下运行,并且即使在负载测试完成后也 …