您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么對Nginx支持SSL的性能進行優化”,在日常操作中,相信很多人在怎么對Nginx支持SSL的性能進行優化問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么對Nginx支持SSL的性能進行優化”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
初始化服務器
這個web服務器運行在一個ec2 t1.micro 環境.我選擇 nginx + php5-fpm 來運行php頁面,出于安全考慮我使用ssl.
測試性能
我使用blitz.io來進行壓力和性能測試. 下面的是我壓力測試的命令. 功能是在60秒內逐漸增加用戶. 在整個過程中,blitz.io 每秒創建一個請求并增加4個用戶(rise/run = 260/60).
復制代碼 代碼如下:
-p 1-250:60 https://mydomian.com
詳細的解釋
對于愛好者來說,這里是詳細的解釋。我將會在下述章節帶領你重溫我的思考過程。
如果編輯了nginx配置,那么重啟nginx服務器。如果編輯了php5-fpm配置,那么重啟服務。
嘗試 #1: 增強硬件
對于改善性能,我本能的想法是增強服務器硬件,希望一切都會正常工作。我將ec2實例從t1.micro升級到了c1.medium(針對高流量服務器進行了優化,而不是通用服務器)。
在此之后,我運行了blitz.io負載測試。這是結果的截圖
服務器的峰值性能可以達到每秒50個成功命中。隨著負載的繼續增加,超時的數量上升,而命中的數量下降。
嘗試 #2: 評效cpu性能
我重新執行了測試,同時在后臺運行htop。我注意到兩個cpu的利用率不超過13%。內存使用了300mb。看起來服務器沒有充分利用。所以我做了下述改變。我編輯了/etc/ngnix/nginx.conf
復制代碼 代碼如下:
worker_processes 2;
嘗試 #3, #4, #5: 微調 nginx + php5-fpm
在下述嘗試中,我改變了下述值,仍然獲得跟嘗試 #1同樣的結果。
嘗試 #3
復制代碼 代碼如下:
/etc/ngnix/nginx.conf
worker_processes 2;
events {
worker_connections 19000;
multi_accept on;
}
...
_________
嘗試 #4
復制代碼 代碼如下:
/etc/ngnix/nginx.conf
worker_processes 2;
events {
worker_connections 19000;
multi_accept on;
}
http {
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml application/javascript text/css application/x-javascript;
…
}
...
________
嘗試 #5
我沒有取消嘗試 #4的改變
復制代碼 代碼如下:
/etc/php5/fpm/pool.d/www.conf
pm.max_children = 160
pm.start_servers = 24
pm.min_spare_servers = 20
pm.max_spare_servers = 35
pm.max_requests = 1500
嘗試 #6: 部署另外一臺服務器
我還有另外一臺linode服務器。具有1.5gb的內存和8個cpu。我復制所有nginx和php5-fpm的設置到這臺服務器上。
這是我使用blitz.io進行壓力測試的命令
復制代碼 代碼如下:
-p 1-250:60 http://labs.mydomian2.com
這是結果:
linode服務器非常棒!我在想“linode比ec2好么?”。在我決定沿著這條思路走下去,將代碼遷移到linode之前,我想要確保兩臺服務器之間沒有差別。
嘗試 #7: 大啟示
我搜索了一下,發現nginx有些ssl相關的問題。默認nginx使用dhe算法創建密碼(cipher)。禁用該算法將會提升性能。
所有我編輯/etc/nginx/nginx.conf去掉了kedh密碼算法。
復制代碼 代碼如下:
worker_processes 2;
events {
worker_connections 1024;
}
http {
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml application/javascript text/css application/x-javascript;
ssl_ciphers all:!kedh!adh:rc4+rsa:+high:+medium:+low:+sslv2:+exp;
…
}
...
我重現執行了原來的壓力測試:
復制代碼 代碼如下:
-p 1-250:60 https://mydomian.com
這是結果:
真的有效!!!!
嘗試 #8: 我真的需要增強硬件
太棒了,ec2與linode在性能上很接近。但是我真的需要c1.medium實例來獲得這種性能么?可能不需要... 所以我將ec2的實例類型改回了t1.micro。
i因為micro實例只有一個cpu,所有我在/etc/nginx/nginx.conf中減少了worker_processes。
復制代碼 代碼如下:
worker_processes 1;
...
這是結果:
到此,關于“怎么對Nginx支持SSL的性能進行優化”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。