2012-06-13 56 views
8

我的應用程序950-970 SSL連接之間保持它出現segfaults內SSL_read之前。是否可以配置OpenSSL接受比這更多的連接?OpenSSL的配置的最大連接數

我編程,它不做了獲取這些後,連接東西,所以我知道這是打開的連接,目前尚未讀取/寫入或時間連接#排名的功能。

更新:

  • 在同一地點的Ubuntu同樣的錯誤。我正在努力繼續前進。
  • 同樣的錯誤,如果我加倍的同時連接數我的機器尺寸(RAM,交換,CPU)。
  • 上下文不爲空。
  • ulimit -n設置爲4096,我也通過設置ulimit -100驗證了這一點,在這種情況下,觀察到不同的錯誤。
  • 即使線程彙集,也會發生問題。問題發生在相同數量的連接上,無論是1個線程/連接還是1個線程/ 10個連接。

我試圖啓用調試選項從源代碼編譯的OpenSSL。我開始懷疑這是否會花費數小時,或者告訴我任何有用的東西。我有我已經確定的段錯誤是在這條線在OpenSSL的v 1.0.1.c發生在該here.

一個問題:

ssl_lib.c:968 

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

此外,我們已確定這是不是裏面段錯誤ssl_read函數(它應該指向ssl3_read)。成員的methodssl_read實際上是無效的本身,它似乎method本身也是無效的(我的基礎上推斷這個「奇怪的看的地址。」)

+0

您能準確找到它在哪個部門嗎? –

+0

SSL_read中的某處位於SSL_read的3/4次,並且位於SSL_get_error中的一次。我不知道如何用gdb來查看內容,儘管我認爲它涉及從源代碼編譯,虛擬化優化等。 – djechlin

+0

您的系統是否有任何機會用完內存或其他資源? –

回答

4

恕我直言,好像你達成了一些限制。正如你所說,數字文件描述符是確定的。因此,您可以嘗試使用ulimit來增加堆棧大小。例如:

ulimit -s 32768 

此外,你可以使用一個工具,如valgrind,來幫助你找出什麼是真正的點怎麼回事您的應用程序段錯誤。

希望它有幫助。

+0

+1提及'valgrind',這是使用將在這裏明確幫助。 – alk