HTTPS下tomcat与nginx的前端性能比较

HTTPS下tomcat与nginx的前端性能比较


摘要

之前比较http的web服务器的性能.
发现nginx 比 tomcat 要好 50%

然后想到, https的情况下不知道两者有什么区别
所以准备再尝试一下. 换用https进行检查. 

Springboot的设置

server:
  ssl:
    key-store: keystore.p12
    keyStoreType: PKCS12
    key-store-password: Testxxxx
    enabled: true
  port: 5401

Nginx的设置

    listen 5402 ssl;
    ssl_certificate cert/perf.xxxx.cloud_bundle.crt;  
    ssl_certificate_key cert/perf.xxxx.cloud.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on;
        location / {
            root html;
            index index.html index.htm;
        }

简单测试

tomcat:
ab -c 1000 -n 50000 -k https://127.0.0.1:5401/index.html
nginx:
ab -c 1000 -n 50000 -k https://127.0.0.1:5402/index.html


简要结果

文件大小 tomcat-http-TPS tomcat-https-TPS nginx-http-TPS nginx-https-TPS
20KB-长连接 44094 9719 66418 14565
20KB-短连接 14121 1305 18080 1846

简要思考

与http的结论一致.
nginx的性能还是 tomcat的 1.5倍,或者是更高. 

更需要注意的是. http下长连接是短连接服务性能的 3 倍 以上. 
https下长连接是短连接服务性能的, 更是高达 7 倍 以上

所以前后端分离, 使用nginx 应该比使用tomcat要优秀. 
并且前端使用 长连接的收效要更好一些. 

结果说明事项

注意: 测试发现, 单worker 1000并发时出现大量的 SSL handshake failed (5).
Nginx 对多线程对并发性能提示还是非常明显的. 
8线程https  1860的吞吐量
1线程https  882.04的吞吐量, 并且错误率非常高. 
Complete requests:      45647
Failed requests:        266

同时间 8 线程的错误率如下:
Complete requests:      49998
Failed requests:        2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章