Linux Ubuntu服务器中的QSslSocket超时,但桌面中没有

Linux Ubuntu服务器中的QSslSocket超时,但桌面中没有,linux,qt,networking,ssl,Linux,Qt,Networking,Ssl,我们的业务应用程序中基于Qt的生产服务器存在问题。当SSL连接总数随时间增加时,某些客户端根本无法连接 QSslSocket::waitForEncrypted()开始失败,没有QSslError,无论超时设置在何处。当此问题开始出现时,有超过100个活动连接 因此有大约170个连接,两倍的线程,“lsof”提到了1000多个打开的文件(为此我们必须增加文件“ulimit”) 这看起来不像是客户机的问题,因为IP会随着时间的推移而失败并重新连接更改(一些IP会成功“跃进”,但另一些则不会) 如前

我们的业务应用程序中基于Qt的生产服务器存在问题。当SSL连接总数随时间增加时,某些客户端根本无法连接

QSslSocket::waitForEncrypted()开始失败,没有QSslError,无论超时设置在何处。当此问题开始出现时,有超过100个活动连接

因此有大约170个连接,两倍的线程,“lsof”提到了1000多个打开的文件(为此我们必须增加文件“ulimit”)

这看起来不像是客户机的问题,因为IP会随着时间的推移而失败并重新连接更改(一些IP会成功“跃进”,但另一些则不会)

如前所述,这在Ubuntu服务器(Zentyal10.04和“香草”9.10)中发生,但在Ubuntu桌面9.10中不发生

一切都在VMWare ESX 4.1内部运行,该系统使用相同的附加资源进行了测试。系统负载保持在1.0以下。守护进程以根权限运行

它看起来像是与“服务器”/“桌面”内核或其他配置不同的东西,但我不能确切地说什么可以使SSL连接不握手。。。在“服务器版本”中

我们使用的是我们自己编译的Qt4.5.3

编辑:毕竟在我尝试过的任何Linux上都是一样的。感觉就像是每个进程的某种套接字限制,witch大约是1016-其他打开的文件。我将尝试提出关于这一点的新问题


编辑2:这是select和FD_SETSIZE限制问题…

问题在于Qt使用select()这一事实,对于所选的最大套接字/文件,它受到FD_SETSIZE宏的限制。在编译libQtNetwork和libQtCore之前,我必须更改/usr/include/bits/typesize.h中的FD_SETSIZE值