我們有大約450個遠程EJB客戶端需要連接到Java EE服務器(OpenEJB 3.1.4容器)。沒有HTTP服務器存在。單個Java EE服務器可以處理多少個遠程EJB客戶端?
我們注意到,在一些客戶端聯機後,服務器開始拋出javax.ejb.ConcurrentAccessTimeoutException。
該文檔說,它是由嘗試併發訪問有狀態會話Bean或方法中的單例bean時發生超時引起的。我們實際上使用了兩者,但很難弄清楚超時的好價值可能是什麼。
如果該值很高,我們會減少ConcurrentAccessTimeoutExceptions,但許多客戶端只是開始永遠掛在那裏。如果該值較低,則會引發大量ConcurrentAccessTimeoutException。
所有450個客戶端在啓動時建立與服務器的連接(因爲連接時間太長而無法按需提供)並永久保留。
現在,還有另一個問題,最重要的是,每個客戶端都會以2秒的間隔持續輪詢服務器。我們可以改變這種行爲,但我們必須調整架構。
是否有研究或任何人有許多客戶連接到Java EE服務器的經驗?
我們可以設計任何需要的東西,但我們希望有一個更具體的目標。
嗯,我希望能有這樣的想法:「我們設法讓N個客戶端擁有一臺服務器」......我們升級到了OpenEJB 4,開始進行更多的測試。 – 2012-08-08 18:11:59
是的,沒有確定的數字。第一個指標是應用程序代碼本身。如果它有太多的同步,不管你投入的硬件如何,它都不能縮放。一旦被清除,第二個最重要的因素是服務器中的核心數量。如果您想離線與我聯繫,我很樂意看到我可以免費爲您提供應用方面的建議。升級是好的,但如果應用程序不允許它將不會改變性能。 – 2012-08-08 20:26:25