【问题标题】:Threaded apache cxf clients and performance on high frequency requests线程化 apache cxf 客户端和高频请求的性能
【发布时间】:2012-07-19 16:11:08
【问题描述】:

我有一个相对简单的 java 服务,它从各种 SOAP web 服务中获取信息,并在后台使用 apache cxf 2.5.2 来实现。该服务启动 20 个工作线程,每小时处理 1000-8000 个请求,每个请求可以根据请求的性质进行 2-5 次 Web 服务调用。

设置

  1. 我在 Web 服务连接上使用连接池
  2. 连接超时设置为 2 秒,以便切实有效地处理请求量。
  3. 所有连接都通过 http 代理发出。
  4. 20 个工作线程
  5. Grunty 16 cpu 盒子

问题是我开始在日志中看到“连接超时”错误,而且其中有很多错误,而且应用程序服务似乎也在影响机器网络性能,因为命令行中的 curl 需要 > 5 秒只需建立与相同 Web 服务的连接。但是,当我停止服务应用程序时,curl 性能大幅提高到

其他人是如何使用 CXF 解决这种情况的?它有效还是他们切换到不同的图书馆?如果您要从头开始,您将如何设计“小负载高频”事务?

【问题讨论】:

    标签: java performance cxf


    【解决方案1】:

    一旦我们遇到与您类似的问题,请求需要很长时间才能完成。这不是CXF 的问题,每个Web 服务的堆栈对于非常频繁的请求都会运行很长时间。

    为了解决这个问题,我们实现了JMS EJB 消息驱动bean。流程如下:当用户将请求发送到 Web 服务时,所有请求都被放入JMS 队列中,这样对用户的响应非常快,请求留给后台处理。后来用户能够看到他们的操作:他们是否仍在发送到进程,如果他们正在处理,他们是否成功完成,或者他们是否由于某种原因未能完成。

    如果我必须设计频繁交易的应用程序,我肯定会使用JMS

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2014-12-12
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多