我們有一個基於apache mina的GPRS網關(服務器)。有時,通常當連接從客戶端慘遭終止時,即拔掉電源線或任何其他異常關機或網絡問題時,它不會在服務器端被移除或關閉。它仍然在那裏,處於閒置狀態,因爲我不知道多久(可能永遠)。 有時我們會在關閉服務器時遇到問題,MINA需要花費太多時間,有時我們最終必須殺死它。我們懷疑這個問題與無法連接的問題有關。其實,這種死不了的關係是有道理的。由於連接被殘忍地關閉,並且mina沒有辦法檢查它(這就是tcp會話的工作原理)。 我們作爲一種解決方法,設計了一個解決方案,如果它保持閒置(讀取和寫入)30分鐘(或任何可配置的時間),我們將關閉會話。我們不喜歡的原因有兩個:
1-看起來不太好。
2-加我們有一個規則,客戶端與服務器建立持久連接。因此,設置'空閒超時'有點困難,因爲我們不能關閉任何空閒時間爲x min/hrs的會話,因爲它可以是有效的連接。
那麼,有沒有更好,更安全的(在我們的情況下)檢測和清理MINA中的這些死亡連接?apache中的死會話
3
A
回答
1
在這兩種情況下長時間沒有活動的連接和丟失的連接 - 在通道中沒有任何活動應該導致在OSI model的每個層的配置時間之後超時。 例如你的防火牆/路由器/服務器可能會在10分鐘內超時不活動的連接條目,那麼你的應用層連接也應該在10分鐘後完成 - 等待更多沒有意義。
防止無聲連接超時保持有效協議應引入。 它可能是ping(不完全是ICMP)或其他形式的定期無操作通信。 當對等體處於活動狀態時,它應該響應並刷新所有網絡層的超時倒數。在超時或層信令斷開連接導致嘗試失敗後,您可以假定您的應用層連接也已中斷。
相關問題
- 1. 會話在CodeIgniter中死亡
- 2. Apache中的PHP會話
- 3. Smarty殺死我的會話
- 4. Apache Sticky會話
- 5. 如何殺死Symfony2中的會話?
- 6. 如何殺死cakephp中的會話
- 7. @Cacheable殺死Hibernate會話?
- 8. 觸發殺死會話
- 9. 殺死postgresql會話/連接
- 10. 如何殺死PHP會話?
- 11. 殺死用戶會話
- 12. apache是否會殺死我的進程?
- 13. Bottle + Apache + WSGI +會話
- 14. Apache保存會話
- 15. 當多個會話中殺死所有會話ASP.NET
- 16. 在R會話中向後死在emacs
- 17. 在Spring Webflow中捕獲「死亡」會話
- 18. PHP會話在html模板中死亡
- 19. Apache JMeter中的會話/ cookie管理
- 20. Apache和Mod_JK中的會話驗證
- 21. Apache mina中的會話管理/監控
- 22. 如何在死屏幕會話中殺死運行腳本
- 23. 如何殺死用戶的會話
- 24. 跨瀏覽器:PHP的殺死會話
- 25. 殺死其他機器的會話
- 26. django + apache + mod_wsgi會話問題
- 27. Apache vs Weblogic會話時間
- 28. 殺死ssh會話殺死正在運行的進程
- 29. 如何殺死一個SQL Server會話或會話ID
- 30. PHP/Apache - 會話不會出現問題
感謝您提供有用的見解。我正在尋找的是使用我使用的框架(Apache Mina)處理它的好方法。 –