2012-07-20 139 views
2

我有一個相對簡單的java服務,從各種SOAP Web服務中獲取信息,並使用apache cxf 2.5.2。該服務啓動20個工作線程,每小時通過1000-8000個請求,每個請求可以根據請求的性質進行2-5次Web服務調用。螺紋apache cxf客戶端和高頻請求的性能

設置

  1. 我使用的web服務的連接
  2. 連接超時被設置爲2秒,以便有效地解決現實的請求的體積連接池。
  3. 所有連接都通過http代理髮送出去。
  4. 20個工作線程
  5. Grunty 16 CPU箱

的問題是,我開始看到「連接超時」在日誌和相當多的人的錯誤,它似乎應用服務也會影響機器的網絡性能,因爲命令行中的curl需要5秒鐘才能建立與相同Web服務的連接。但是,當我停止服務應用程序時,捲曲性能急劇提高至< 5ms

其他人如何使用CXF解決這種情況?它工作還是他們切換到不同的圖書館?如果您要從頭開始,您將如何設計'小載荷高頻率'交易?

回答

2

一旦我們遇到類似的問題,請求花費很長時間才能完成。這不是CXF問題,每個Web服務的堆棧都會在很頻繁的請求中運行很久。

爲了解決這個問題,我們實現了JMS EJB消息驅動bean。流程如下:當用戶將請求發送到Web服務時,所有請求都被放入隊列JMS,以便對用戶的響應非常迅速,請求留在後臺進行處理。之後,用戶能夠看到他們的操作:如果他們仍然被髮送處理,如果他們正在處理,成功完成或者由於某種原因未能完成。

如果我必須設計頻繁的交易應用程序,我肯定會使用JMS

希望這會有所幫助。