2012-05-30 16 views
2

是否有二郎一種方式來獲得一個SSL連接到底有多少內存佔用?二郎得到確切大小的SSL連接的存儲

現在我還挺通過連接的客戶端的數量將在內存中的整個beam.smp大小(減去初始化大小)猜測...

我使用R15B01

的SSL連接是通過gen_server處理,做

process_info(spawn(Fun), memory). 

給我GC調用後:

{memory,2108} 

這顯然不包含SSL套接字連接大小。

+1

有沒有這樣的東西作爲「SSL連接的大小」。問題沒有意義,不能以現在的形式回答。請再試一次。 – EJP

+3

@EJP:詢問SSL連接與Erlang有多少內存有什麼關係? – TheSquad

+0

因爲(1)你不清楚你在詢問什麼:如果你正在談論數據傳遞,你就不知道沒有閱讀全部內容;如果你談論的是開放連接的增量成本,(2)它會隨着時間的推移而變化,並且根據服務器向你發送多少個證書,你支持多少密碼套件以及服務器選擇哪一個等等。等等。它只是不是一個明確的量子。 – EJP

回答

2

的事情是,即使處理單個SSL連接二郎啓動多個單獨的進程(證書數據庫,SSL管理,SSL會話等),而且每個流程都可能有它的數據單獨的存儲。因此,很難給出明確的答案每個連接佔用多少內存,因爲有相當多的地方保留有關連接的信息。

如果你需要的估計,我將做到以下幾點:

  1. 開始SSL服務器和SSL客戶端在http://pdincau.wordpress.com/2011/06/22/a-brief-introduction-to-ssl-with-erlang/
  2. 保存TotalMemory1 = proplists:get_value(total, memory()).服務器會話描述。
  3. 試圖從一個單獨的客戶端會話中打開更多的99個客戶端連接。
  4. 除以(TotalMemory2 - TotalMemory1)/99計算TotalMemory2 = proplists:get_value(total, memory()).
  5. 實測出的存儲器中的單個連接採用攤銷量。
+0

嗯,我想我偷偷知道答案,這是不可能的現成的......但是我會嘗試你的解決方案,它似乎比我估計插座大小更少的crapy。 – TheSquad