簡體   English   中英

USntu Server中的QSslSocket超時,但不在桌面中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM