測試的網站主機硬體是家用迷你PC Intel Core i5-4210U,搭配2.5″ SSD,網路是100/40M光世代。WordPress 5.3.2 + WooCommerence 3.8,主機實際上線運作已經5年,後端為Nginx+PHP-fpm。第一部分我用loader.io來測試沒有安裝快取的原始狀態,第二部分加裝Redis,第三部分為加裝了Redis和Varnish共同運作。可以看這張成果,測試時間都是1分鐘內,打勾表示可以通過測試且error rate小於1%,打叉叉的表示後期沒有獲得回應太多而無法完成測試。

第一部分測試:沒有快取

我比較圖表最下方的第一部分測試,在可通過測試的每分鐘180次請求,和每分鐘240次請求這兩者的歷程曲線,當回應時間超過8000ms之後,nginx會開始崩潰而不產生回應。每秒4次的請求便讓系統在運作10秒左右後就無法繼續任務。

沒有快取,每秒3次,可通過測試
沒有快取,每秒4次,無法通過測試

第二部分:啟用Redis

使用Redis結果並沒有任何提升,依舊是維持在相同的負載能力,超過每秒4次的請求也只能工作10餘秒就撐不下去。

第三部分:使用Varnish

網頁處理流程為 Nginx HTTPS Proxy (443) <–> Varnish (6081) <–> PHP-fpm (8080)

可以負載每秒30次請求(error rate 0.1%),超過這個次數的測試,就無法完成

綜合看來,從沒有設置快取到使用Varnish快取,讓Nginx的負載能力大大提升10倍。