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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章