node.js中SSL连接的内存开销是多少?



我使用的是节点版本v0.8.16。它与openssl 1.0.0f捆绑在一起,包含SSL_OP_NO_COMPRESSIONSSL_MODE_RELEASE_BUFFERS

我的测试ssl服务器只是在传入https请求时回显hello world并保持连接打开。从我的测试来看,每个ssl连接的内存开销大约是150k。

节点中ssl连接的内存开销是多少?在这种情况下,我如何减少ssl内存使用?

SSL需要每个连接的空间

  • socket FD
  • 为最大可能的SSL记录提供大约16k的接收缓冲区,这与密码套件略有不同
  • 一个输出缓冲区,大概也是16k
  • 空间计算
  • 中的每消息mac
  • 握手状态、连接状态、握手MAC等
  • 指向SSL会话的指针,该会话可在指向同一目标的连接之间共享,并且必须包含密码套件、协议、预主秘钥、共享秘钥、会话ID、对等证书链、超时变量等。
  • 还有其他我没想到的。

此外,TCP连接将消耗内核空间,例如套接字发送和接收缓冲区

SSL每个连接需要大约128K甚至更多的内存缓冲区(取决于实现),因此您可能无法减少内存使用量。

最新更新