c++ - OpenSSL 库压力容忍度

标签 c++ multithreading ssl openssl

我和我的同事都觉得 OpenSSL 或多或少需要从我们的应用程序中得到推销,但我想就它是否真的这么糟糕或者我们使用这个库时是否存在可能导致的问题提出一些意见我们麻烦了。

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

在 500 个用户时,它运行良好。我正在尝试将限制增加到 1000,而 960 左右在 SSL_read 中出现段错误。此读取是此特定连接的第一个 I/O 操作。我必须将 ulimit 中的文件限制从 1024 增加到 4096 才能达到这个高度。所以我的问题是:

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

2) 是否可以通过少量使用互斥锁来解决线程问题?不过,我不能将整个 SSL_read 变成关键 strip 。

3) 只是一个有问题的库,需要扔掉吗?

最佳答案

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

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

关于c++ - OpenSSL 库压力容忍度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11018412/

相关文章:

c++ - 为什么 noexcept 在标准库中没有更多使用?

c++ - 逆向工程 C++

java - 使用并发运行的线程将单词添加到数组列表

python - Python asyncio 是否使用线程池?

r - 如何让 R 接受自签名证书

c++ - 检查 map 条目是否在基于的范围内的最后一个?

c++ - 使用 CGAL 框架在 C++ 中进行正常估计

c++ - react 线程需要其引用共享状态的 std::shared_future 的 OWN COPY

java - 使用 SSL 时 REST 响应超过 8KB 错误

javascript - Web 套接字不适用于 JavaScript 中的 SSL 和 WSS