C++ OpenSSL配置最大连接数

C++ OpenSSL配置最大连接数,c++,c,openssl,C++,C,Openssl,我的应用程序保留950-970个SSL连接,然后在SSL\u read中隔离故障。是否可以将OpenSSL配置为接受比此更多的连接 我已经将其编程为在获得连接后不会对其进行任何操作,因此我知道这是开放连接的函数,而不是当前读/写或时间的函数 更新: ubuntu在同一个地方出现同样的错误。我正在开发ubuntu 如果在相同的连接数下将计算机大小(RAM、交换、CPU)增加一倍,则会出现相同的错误 上下文不为空 ulimit-n设置为4096。我也通过设置ulimit-100验证了这一点,在这种

我的应用程序保留950-970个SSL连接,然后在
SSL\u read
中隔离故障。是否可以将OpenSSL配置为接受比此更多的连接

我已经将其编程为在获得连接后不会对其进行任何操作,因此我知道这是开放连接的函数,而不是当前读/写或时间的函数

更新:

  • ubuntu在同一个地方出现同样的错误。我正在开发ubuntu
  • 如果在相同的连接数下将计算机大小(RAM、交换、CPU)增加一倍,则会出现相同的错误
  • 上下文不为空
  • ulimit-n
    设置为4096。我也通过设置
    ulimit-100
    验证了这一点,在这种情况下观察到了不同的错误
  • 即使线程被池化,问题也会发生。问题发生在相同数量的连接上,无论是1个线程/连接还是1个线程/10个连接
我正在尝试从启用调试选项的源代码构建OpenSSL。我开始怀疑这是否需要几个小时或者告诉我什么有用的东西。我有一个问题

我已经确定openssl v 1.0.1.c中的这一行发生了SEGFULT:

ssl_lib.c:968

968     return(s->method->ssl_read(s,buf,num));

此外,我已经确定这不是
ssl\u read
函数内部的分段故障(应该指向
ssl3\u read
)。
method
的成员
ssl\u read
本身实际上是无效的,而且似乎
method
本身也是无效的(我是根据“奇怪的地址”推断出来的)。

IMHO,看起来你达到了某种极限。正如您所说,文件描述符的数量是可以的。因此,您可以尝试使用
ulimit
增加堆栈大小。例如:

ulimit -s 32768
此外,你可以使用一个工具,比如,来帮助你找出你的应用程序出现故障时到底发生了什么


希望能有所帮助。

您能准确地找到它的故障位置吗?在SSL中的某个位置读取3/4次,在SSL中读取一次错误。我不知道如何用gdb更仔细地观察内部,尽管我认为这涉及到从源代码编译、优化等等。您的系统是否正在耗尽内存或其他资源?这不是不可能的,我猜C库只会segfault而不是给我一个“内存不足”异常。有可能核实这一点吗?我还必须增加可以打开的文件的ulimit。它运行在什么操作系统上?+1提到
valgrind
,它的使用肯定会有所帮助。