1

同僚と私は、多かれ少なかれ OpenSSL をアプリケーションから提案する必要があると感じていますが、それが本当に悪いのか、それともこのライブラリの使用に問題があり、問題を引き起こす可能性があるのか​​について意見を求めています.

設定: 各ユーザーの永続的な SSL 接続を維持するマルチスレッド C++ アプリケーション。

500 ユーザーで問題なく動作しました。制限を 1000 に増やそうとしていますが、約 960 にセグメンテーション違反がありましたSSL_read。この読み取りは、この特定の接続の最初の I/O 操作です。ここまで上げるには、ファイル制限をulimit1024 から 4096 に増やす必要がありました。だから私の質問は:

1) この多くの接続を受け入れるようにライブラリを構成する必要がある可能性はありますか?

2)ミューテックスを軽く使用することで解決できるスレッドの問題ですか? ただし、 SSL_read 全体を重要なストリップに変える余裕はありません。

3) ただの悪いバグのあるライブラリで、廃棄する必要がありますか?

4

1 に答える 1

0

あなたのコメントに基づいて、接続ごとに1つのスレッドはスレッドの効率的な使用法とは思えません。

スレッド プールを提案し、ワーカー スレッドを使用して受信したパケットを処理します。受信したパケットはキューに入れられ、ワーカー スレッドはキューからのパケットを処理します。openSsl 接続は、すべてのスレッドに共通のコンテナーに格納できます。パケットを順番に処理するには注意が必要です。はい、同期 (ミューテックス) が必要になります。

于 2012-06-13T15:51:20.833 に答える