1

我的同事和我有一个很好的感觉,OpenSSL 或多或少需要从我们的应用程序中获得支持,但我想就它是否真的这么糟糕或者我们使用这个库是否存在可能给我们带来麻烦的问题提出一些意见。

设置:为每个用户维护持久 SSL 连接的多线程 C++ 应用程序。

在 500 个用户中,它运行良好。我正在尝试将限制增加到 1000 并且大约 960 在SSL_read. 此读取是此特定连接的第一个 I/O 操作。我不得不将文件限制ulimit从 1024 增加到 4096 才能达到这么高。所以我的问题是:

1)是否有可能需要将库配置为知道接受这么多连接?

2)这是一个线程问题,可以通过轻微使用互斥锁来解决吗?不过,我不能把整个 SSL_read 变成一个关键地带。

3)只是一个糟糕的错误库,需要被扔掉?

4

1 回答 1

0

根据您的评论,每个连接 1 个线程似乎不是线程的有效使用。

我会建议一个线程池并使用工作线程来处理接收到的数据包。接收到的数据包可以排入队列,工作线程将处理来自队列的数据包。openSsl 连接可以存储在所有线程通用的容器中。必须注意按顺序处理数据包。是的,将需要同步(互斥锁)。

于 2012-06-13T15:51:20.833 回答