在PayPal改善Node.js的SSL的性能

Trevor Livingston是一名就职于PayPal的软件工程师,他在最近的一篇帖子里概括了一些改善Node.js出站SSL性能的建议。

用计算没那么密集的加密算法

首先,Livingston谈到Node.js使用的一些默认加密算法(比如 Diffie Hellman和 Elliptical Curve )非常强大但是“极为昂贵,当你以默认设置开始发起大量出站SSL调用时会从根本上削弱Node.js的性能”。Livingston说,在一个服务调用中密钥生成占87%的时间。他建议使用占资源较少的算法。

var agent = new https.Agent({
    "key": key,
    "cert": cert,
    "ciphers": "AES256-GCM-SHA384"
});

在Livingston的测试中,使用AES256生成密钥所需的时间会减少到32.5%。

使用keep alive——keepAliveAgent包的作者说,它能将每秒事务数提升50%以上。这个包在即将发布的Node.js 0.12中不是必需的。

优化agent.maxSockets——每个源默认的并发socket数量是5,这个数目不能太高,因为它“能导致负面的性能影响”,Livingston说。

调整slab buffer size应该小心地操作,因为在高容量时它会影响垃圾收回的时间。0.12版发布后应该就不再需要这种微调了。

Livingston还写下了即将发布的 Node.js 0.12已经做出的一部分改进,使用AES256的时候几乎使每秒服务的请求数翻了一倍。

会话重用。另一个改善Node性能的建议是会话重用, Miroslav Bajtoš 在早先的一个帖子里提到过一个详细的思路。为此,需要创建一个会话存储并处理newSession和resumeSession事件。在他们各自的帖子中所包含的代码示例展示了针对单线程应用和针对工作进程集群的会话重用。

查看英文原文:Improving Node.js’ SSL Performance at PayPal

感谢杨赛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(在PayPal改善Node.js的SSL的性能)