我有一个相对简单的 java 服务,它从各种 SOAP Web 服务中获取信息,并在后台使用 apache cxf 2.5.2 来实现。该服务启动 20 个工作线程,每小时处理 1000-8000 个请求,每个请求可以根据请求的性质进行 2-5 次 Web 服务调用。
设置
- 我在 Web 服务连接上使用连接池
- 连接超时设置为 2 秒,以便切实有效地处理请求量。
- 所有连接都通过 http 代理发出。
- 20 个工作线程
- Grunty 16 cpu 盒子
问题是我开始在日志中看到“连接超时”错误,而且其中有很多错误,而且应用程序服务似乎也影响了机器的网络性能,因为命令行中的 curl 只需 > 5 秒建立与相同 Web 服务的连接。但是,当我停止服务应用程序时,curl 性能大幅提高到 < 5ms
其他人是如何使用 CXF 解决这种情况的?它有效还是他们切换到不同的图书馆?如果您要从头开始,您将如何设计“小负载高频”事务?