首页 > QOS保障 > 正文

HTTPS性能深度优化
2015-04-23 11:47:54   来源:我爱运维网   评论:0 点击:

近期对使用https的接入proxy,做了一轮优化,减少了cpu使用,提高了安全性,应用在多个应用接入proxy模块中。优化措施主要有:打开ECDHE支...
近期对使用https的接入proxy,做了一轮优化,减少了cpu使用,提高了安全性,应用在多个应用接入proxy模块中。
优化措施主要有:
  1.  打开ECDHE支持,降低 20% 的cpu 
  2.  打开http KeepAlive支持,预计降低 60%的cpu 
  3.  openssl升级到1.0.1m,并在编译时关闭ssl2,ssl3,heartbeats等,提高安全性;   使用 ec_nistp_64_gcc_128 等编译选项,优化性能
  4.  将comm2里面的aes切换为AES-NI实现,有5倍性能提升
 
逐项说明如下:
 
1. 打开ECDHE支持
 
下图是发布前后的cpu对比,cpu降低20%

 HTTPS性能深度优化
 
2.打开http KeepAlive支持
打开KeepAlive后,客户端重用tls连接,减少了https握手次数,从而降低cpu。
 
对1台机器做了灰度测试,在流量涨了5倍的情况下:
 
HTTPS性能深度优化 
cpu只增加了1倍
HTTPS性能深度优化
 
流量涨是因为灰度的这台机器保持住了更多的连接。
换算后,预测可以降低60%的cpu
 
3.openssl升级到1.0.1m,调整了编译选项
鉴于openssl近期连续爆出安全漏洞,这次调整了openssl的编译选项,在编译时禁用掉了ssl2,ssl3,heartbeat等特性,
ssl2,ssl3 由于POODLE漏洞,之前是通过配置关掉的,这次在编译时彻底去掉。
HeartBleed漏洞就出现在heartbeat的代码里;
还去掉了一批已经不安全的算法和特性,例如md4,comp(CRIME攻击) 等
去掉了一批不使用的特性,例如dtls,krb5
 
还打开了32位时的编译优化,在32位打开了AES-NI等;
并打开ec_nistp_64_gcc_128 选项,优化ECDH性能,预期各种https 服务器和mmcert都会受益。
 
 
4.  将comm2里面的aes切换为AES-NI实现
AES-NI是Intel cpu专门用于aes加解密的指令集,使用openssl speed 命令测试,有5-6倍性能提升
软件版本:
HTTPS性能深度优化
AES-NI版本:
HTTPS性能深度优化
 
目前主流intel X86机型已经普遍支持AES-NI,这次把comm2里面的aes切换为使用EVP系列接口,会在运行时做cpuid检测,在支持的cpu上自动使用AES-NI,
相应服务只需要重新编译上线,即可获得优化。
 
使用逻辑服务模块做了测试,优化前aes占2.2%的cpu,优化后占0.5%

相关热词搜索:https 性能

上一篇:性能调优攻略
下一篇:最后一页

分享到: 收藏