增加Jetty性能

时间:2013-03-13 13:35:52

标签: performance jetty apache-httpclient-4.x

我有一个程序必须像硬件允许的那样快速地发出数千个http请求。在现实世界中,每个连接都将进入一个独立的服务器,但我已经编写了一个测试程序,可以帮助我模拟一个负载(希望如此)。

我的程序使用Apache HttpClient来发出http请求。我的代码基于Threaded request executionhere示例。

我的测试程序正在使用Jetty来处理http请求并返回正确的响应。我将我的代码基于一个简单的例子,例如发现here的HelloServlet。

当我运行测试并监控jetty进程时,它只使用适量的CPU资源。此外,我使用VM来运行jetty服务器的第二个实例,并且看到测试在将近一半的时间内完成。

我查找了有关如何调整Jetty并找到this document的信息。我遵循了这些步骤,但似乎没有提高性能。有关如何提高Jetty性能的更好的文档吗?

修改

我检测了我的Jetty服务器,以便在执行期间向我显示空闲线程数。我像这样配置了服务器的threadPool:

server.setThreadPool(new ExecutorThreadPool(Executors.newFixedThreadPool(500)));

但我的测试程序告诉我~490个线程空闲。我的生产代码使用了2,000个线程,但看起来码头正在排队连接。

1 个答案:

答案 0 :(得分:3)

我能给你的最好的指导是参考一些关于基准测试的码头创始人Greg Wilkins的博客。我之所以这么说是因为老老实实地试图调整你的情景并没有达到真正的实际利益。

http://webtide.intalio.com/2010/06/lies-damned-lies-and-benchmarks-2/

http://webtide.intalio.com/2012/05/truth-in-benchmarking/

我还要指出,现在改进servlet的主要方法是使它们异步,这似乎很简单但可以带来许多其他编程缺陷。在许多情况下,交替使用SPDY或websockets等现代协议可以再次大幅提升性能。

相关问题