我最近一直在努力找出在我们的环境中的performance是瓶颈的地方。
环境(每台服务器是Linux VM,8核,32 GB RAM):
负载平衡:50
Web服务器(rsync):51,52,54
DB(MySQL 5.6 master master):56,58
我build立了一个负载平衡的环境,HAProxy负载均衡,Nginx的SSL终止在..50。 HAProxy侦听端口80,并将stream量指向.. .51,52或54.它还侦听端口3306,并在.._。56和58之间引导stream量以实现数据库负载平衡。 Nginx监听端口443,并处理SSL握手,同时将实际stream量转发到同一台机器上的端口80,由HAProxy处理。
该设置以〜1000 /秒处理非SSL连接,但SSL连接以〜300 /秒处理。
我最近通过将我们的HAProxy版本升级到可以处理SSL终止的版本来改变环境。 HAProxy现在侦听端口80和端口443,在后者处理SSL握手,并将stream量转发到Web服务器:51,52和54.性能保持大致相同,但configuration更简单。
我已经看到了负载平衡器的顶部,在这两种情况下,服务器上几乎没有任何负载。 端口80或443的stream量。 如我所料,Web服务器在我的端口80testing期间受到敲击,但是在我的443testing中它们显示的负载非常小。
是否有任何你知道的事情可以做,以增加我们的SSL连接的响应时间?
任何和所有的提示或build议是受欢迎的,我想获得尽可能多的performance,我可以。
谢谢大家!
将更快的SSL密码放在列表的顶部(当然那些符合您的安全要求的密码)
haproxy的例子
bind *:443 ssl crt /etc/ssl/... ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256 prefer-server-ciphers ...
我在nginx实例上的设置如下
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
您可以testing平衡器上可用的SSL密码的速度,例如
$ openssl speed