Performance 提高码头性能

Performance 提高码头性能,performance,jetty,apache-httpclient-4.x,Performance,Jetty,Apache Httpclient 4.x,我有一个程序,它必须以硬件允许的速度发出数千个http请求。在现实世界中,这些连接中的每一个都将连接到一个独立的服务器,但我已经编写了一个测试程序,它将帮助我模拟负载(希望如此) 我的程序使用ApacheHttpClient发出http请求。我的代码基于中的示例 我的测试程序使用Jetty处理http请求并返回正确的响应。我的代码基于一个简单的示例,如HelloServlet found 当我运行测试并监视jetty进程时,它只使用了少量的CPU资源。此外,我使用虚拟机运行jetty服务器的第二

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

我的程序使用ApacheHttpClient发出http请求。我的代码基于中的示例

我的测试程序使用Jetty处理http请求并返回正确的响应。我的代码基于一个简单的示例,如HelloServlet found

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

我寻找有关如何调整Jetty的信息,并找到了。我遵循了这些步骤,但似乎没有提高性能。是否有更好的文档说明如何提高Jetty的性能

编辑 我检测了Jetty服务器,以显示执行期间的空闲线程数。我将服务器的线程池配置为:

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

但是我的测试程序告诉我大约490个线程处于空闲状态。我的生产代码使用2000个线程,但jetty似乎正在排队连接。

我能给你的最好指导是向你介绍jetty创始人Greg Wilkins关于基准测试的几篇博客。我这样说是因为诚实地尝试调整到上面的场景实际上并没有实现太多的实际兴趣


我还要指出,目前改进servlet的主要方法是使其异步化,这似乎很简单,但可能会带来许多其他编程缺陷。或者,在许多情况下,使用现代协议(如SPDY或websockets)可以再次大幅提高性能。

您使用哪台机器的CPU、CPU速度、RAM?jetty服务器运行在具有8G RAM的i5四核上。UUT是一个具有2G RAM的intel atom,但瓶颈似乎是jetty服务器。您找到了解决方案吗?我有一个类似的问题在这里。。。一些提示可能会有帮助。。。