2

erlang 中有没有办法准确获取 SSL 连接需要多少内存?

现在我有点猜测通过将内存中的整个 beam.smp 大小(减去初始化大小)除以连接的客户端数量......

我正在使用 R15B01

SSL 连接由 gen_server 处理,执行

process_info(spawn(Fun), memory).

在 gc 调用后给我:

{memory,2108} 

这显然不包含 SSL 套接字连接大小。

4

1 回答 1

2

问题是即使处理单个 SSL 连接,Erlang 也会启动几个单独的进程(证书数据库、ssl 管理器、ssl 会话等),并且每个进程都可能有一个单独的数据存储。因此,很难给出一个明确的答案,每个连接需要多少内存,因为有很多地方保存有关连接的簿记信息。

如果您需要估算,我会执行以下操作:

  1. http://pdincau.wordpress.com/2011/06/22/a-brief-introduction-to-ssl-with-erlang/中所述启动 SSL 服务器和 SSL 客户端
  2. 保存TotalMemory1 = proplists:get_value(total, memory()).在服务器会话中。
  3. 试图从一个单独的客户端会话中再打开 99 个客户端连接。
  4. 计算出来的TotalMemory2 = proplists:get_value(total, memory()).
  5. 通过除法找出单个连接占用的内存量(TotalMemory2 - TotalMemory1)/99
于 2012-06-02T12:04:23.287 回答