8

我的应用程序在内部出现段错误之前拥有 950-970 个 SSL 连接SSL_read。是否可以将 OpenSSL 配置为接受比这更多的连接?

我已经对其进行了编程,使其在获取连接后不对连接执行任何操作,所以我知道这是打开连接数的函数,而不是当前读/写或时间的连接数。

更新:

  • ubuntu 在同一个地方出现同样的错误。我正在开发 ubuntu。
  • 如果我在相同数量的连接下将我的机器大小(RAM、交换、CPU)加倍,则会出现同样的错误。
  • 上下文不为空。
  • ulimit -n设置为 4096。我也通过设置验证了这一点,ulimit -100在这种情况下会观察到不同的错误。
  • 即使线程被池化,问题也会发生。问题发生在相同数量的连接上,无论是 1 个线程/连接还是 1 个线程/10 个连接。

我正在尝试从启用调试选项的源代码构建 OpenSSL。我开始怀疑这是否需要几个小时或告诉我任何有用的信息。我在这里有一个问题

我已经确定在 openssl v 1.0.1.c 的这条线上发生了段错误:

ssl_lib.c:968

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

此外,我已经确定这不是ssl_read函数内部的段错误(应该指向ssl3_read)。的成员实际上本身是无效的,而且它本身似乎ssl_read也是无效的(我是根据“奇怪的地址”推断出来的。)methodmethod

4

1 回答 1

4

恕我直言,您似乎达到了一些限制。正如你所说,数字文件描述符是可以的。因此,您可以尝试使用ulimit. 例如:

ulimit -s 32768

此外,您可以使用valgrind之类的工具来帮助您找出应用程序段错误时的实际情况。

希望能帮助到你。

于 2012-06-23T05:40:37.470 回答