2012-06-13 67 views
1

我的同事和我有一個良好的感覺,OpenSSL的或多或少需要得到從我們的應用程序高亢,但我想它是否真的是這個壞或是否有問題,我們使用這個庫的一些看法那可能會給我們帶來麻煩。OpenSSL庫抗逆性

設定:維持每個用戶的持久SSL連接一種多線程C++應用程序。

在500個用戶它工作得很好。我試圖將限制增加到1000,並且在SSL_read中有大約960的段錯誤。此讀取是此特定連接的第一個I/O操作。我必須將ulimit中的文件限制從1024增加到4096才能達到這個高點。所以我的問題是:

1)是否有可能在庫需要進行配置,以瞭解接受這個許多連接?

2)它是一個線程問題可能與光使用互斥量來解決呢?儘管如此,我不能將整個SSL_read變成關鍵帶。

3)只是一個壞車庫,需要被拋出?

+1

OpenSSL在許多應用程序中工作正常。你使用什麼版本? –

+0

看起來像'OpenSSL 1.0.0-fips 2010年3月29日' – djechlin

+1

多線程如何涉及? – Brady

回答

0

根據您的意見,每個連接1個線程似乎不像線程的有效使用。

我會建議一個線程池並使用工作線程來處理收到的數據包。收到的數據包可以排入隊列,工作線程將處理來自隊列的數據包。 openSsl連接可以存儲在所有線程共有的容器中。必須小心處理這些數據包。是的,同步(互斥)將需要。

+0

好吧,讓我們看看在我的應用程序是否可能 - http://stackoverflow.com/questions/11018776/is-it-possible-to-thread-pool-imap-connections – djechlin