gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:53:32 25 4
gpt4 key购买 nike

我们的业务应用程序基于 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 值。

关于linux - Ubuntu 服务器中的 QSslSocket 超时,但桌面中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8297941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com