[英]QSslSocket timeouts in Ubuntu Server, but not in Desktop
我們的業務應用程序的基於Qt的生產服務器存在問題。 當總SSL連接隨時間增加時,某些客戶端根本無法連接。
QSslSocket :: waitForEncrypted()開始失敗,沒有QSslError,無論設置的超時如何。 當這個問題開始出現時,還有大約100個活動連接。
所以有大約170個連接,兩次線程,並且“lsof”提到了超過1000個打開的文件(我們不得不為此增加文件“ulimit”)。
它看起來不像是客戶端問題,因為失敗和重新連接的IP隨着時間的推移而變化(有些“成功”,但其他的則沒有)。
如上所述,這發生在Ubuntu Server(Zentyal 10.04和“vanilla”9.10)中,但不適用於Ubuntu Desktop 9.10。
一切都在VMWare ESX 4.1中運行,測試的系統附加了相同的資源。 系統負載低於1.0。 守護程序以root權限運行。
它看起來像是“服務器”/“桌面”內核或其他配置差異,但我無法確定究竟是什么能使SSL連接不能握手......在“服務器版本”中......
我們正在使用自己編譯的Qt 4.5.3。
編輯:畢竟在我試過的任何Linux上都是一樣的。 感覺它是每個進程的某種插座限制,女巫約1016 - other_opened_files。 我會嘗試創建新的問題。
編輯2:這是選擇和FD_SETSIZE限制問題...
問題在於Qt使用select(),它受FD_SETSIZE宏限制,用於最大選擇的套接字/文件。 在編譯libQtNetwork和libQtCore之前,我必須在/usr/include/bits/typesizes.h中更改FD_SETSIZE值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.