螺纹apache cxf客户端和高频请求的性能
问题描述:
我有一个相对简单的java服务,从各种SOAP Web服务中获取信息,并使用apache cxf 2.5.2。该服务启动20个工作线程,每小时通过1000-8000个请求,每个请求可以根据请求的性质进行2-5次Web服务调用。螺纹apache cxf客户端和高频请求的性能
设置
- 我使用的web服务的连接
- 连接超时被设置为2秒,以便有效地解决现实的请求的体积连接池。
- 所有连接都通过http代理发送出去。
- 20个工作线程
- Grunty 16 CPU箱
的问题是,我开始看到“连接超时”在日志和相当多的人的错误,它似乎应用服务也会影响机器的网络性能,因为命令行中的curl需要5秒钟才能建立与相同Web服务的连接。但是,当我停止服务应用程序时,卷曲性能急剧提高至< 5ms
其他人如何使用CXF解决这种情况?它工作还是他们切换到不同的图书馆?如果您要从头开始,您将如何设计'小载荷高频率'交易?
答
一旦我们遇到类似的问题,请求花费很长时间才能完成。这不是CXF
问题,每个Web服务的堆栈都会在很频繁的请求中运行很久。
为了解决这个问题,我们实现了JMS EJB
消息驱动bean。流程如下:当用户将请求发送到Web服务时,所有请求都被放入队列JMS
,以便对用户的响应非常迅速,请求留在后台进行处理。之后,用户能够看到他们的操作:如果他们仍然被发送处理,如果他们正在处理,成功完成或者由于某种原因未能完成。
如果我必须设计频繁的交易应用程序,我肯定会使用JMS
。
希望这会有所帮助。