我有一个程序必须在硬件允许的情况下尽快发出数千个 http 请求。在现实世界中,这些连接中的每一个都将连接到一个独立的服务器,但我已经编写了一个测试程序来帮助我模拟负载(希望如此)。
我的程序使用 Apache HttpClient 发出 http 请求。我的代码基于此处的线程请求执行示例。
我的测试程序使用 Jetty 来处理 http 请求并返回正确的响应。我的代码基于一个简单的例子,比如在这里找到的 HelloServlet 。
当我运行测试并监控码头进程时,它只使用少量的 CPU 资源。此外,我使用 VM 运行了第二个 jetty 服务器实例,发现测试在将近一半的时间内完成。
我查找了有关如何调整 Jetty 的信息并找到了这个文档。我遵循了这些步骤,但似乎并没有提高性能。是否有关于如何提高 Jetty 性能的更好文档?
编辑
我对我的 Jetty 服务器进行了检测,以向我显示执行期间的空闲线程数。我这样配置服务器的线程池:
server.setThreadPool(new ExecutorThreadPool(Executors.newFixedThreadPool(500)));
但我的测试程序告诉我,大约 490 个线程处于空闲状态。我的生产代码使用 2,000 个线程,但似乎码头正在排队连接。