【问题标题】:Erlang getting the exact size in memory of a SSL connectionErlang 在内存中获取 SSL 连接的确切大小
【发布时间】:2012-06-02 20:34:01
【问题描述】:

在 erlang 中有没有办法准确获取 SSL 连接占用多少内存?

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

我正在使用 R15B01

SSL 连接由 gen_server 处理,正在做

process_info(spawn(Fun), memory).

gc 调用后给我:

{memory,2108} 

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

【问题讨论】:

  • 没有“SSL 连接的大小”之类的东西。问题是没有意义的,不能以现在的形式回答。请重试。
  • @EJP : 询问使用 Erlang 的 SSL 连接占用多少内存有什么意义?
  • 因为(1)不清楚你在问什么:如果你在谈论从它那里得到的数据,你不阅读它就无法知道;如果您谈论的是仅打开连接的增量成本,(2)它会随着时间而变化,并根据服务器发送给您的证书数量,您支持的密码套件数量以及服务器选择的密码套件等而变化等等。它只是不是一个定义明确的量子。
  • @EJP :你显然是在想这个......我需要的是一种在特定时间在 Erlang 上获取 SSL(“结构”)连接的内存大小的方法......不重要的是密码套件,证书,...,我不是在寻找手动计算大小,而是从 VM 获取它。我特别要求这个来评估哪些参数消耗更少的内存。
  • @EJP:我的目标是尽量减少 SSL 会话对象的大小以节省一些 RAM。为此,我正在尝试多个参数(在 VM 和系统上)。但我需要数字数据,以便知道哪些是真正相关的。

标签: ssl erlang size


【解决方案1】:

问题是即使处理单个 SSL 连接,Erlang 也会启动几个单独的进程(证书数据库、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 = proplists:get_value(total, memory()).
  5. 通过除以 (TotalMemory2 - TotalMemory1)/99 计算出单个连接占用的平均内存量。

【讨论】:

  • 好吧,我想我偷偷知道答案,即不可能开箱即用...但是我会尝试您的解决方案,估计套接字大小似乎比我的要差.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
相关资源
最近更新 更多