三月 15, 2016 | 伺服器和Devops
還在猶豫Drupal伺服器環境?來看看壓力測試後的選擇吧!
前言
每個網站,都需要不同的伺服器環境,來使網站正常運作。相信玩過Drupal的人,都應該很清楚Drupal的「重量」(對資料庫來說負擔不輕)。那麼 Drupal 網站,到底要用什麼樣的環境,使 Drupal 可以流暢的執行呢?這邊我們就拿 Drupal 最基本需求的 PHP 與 Web server 來測試吧!
PHP 版本測試
測試同一個 Drupal 7.43 的網站,放在不同PHP環境下的測試結果(預設搭配伺服器為 Apache2 網站伺服器)。
1.測試環境:
利用 Docker 建立起多個 container 容器,透過安裝不同版本的PHP(PHP5.3、PHP5.5.9、PHP7 和 HHVM)來判斷提升PHP版本對於運行效能的提升,測試軟體為 ApacheBench,使用 ab -c 10 -n 1000
指令模擬10位測試者對目標(首頁與node頁)存取1000次,抓取的測試結果是每秒的處理量(Requests per second)與平均每個要求所花費的時間(ms)。
2.測試結果:
綠色與黃色的HHVM 3.11.1 跟PHP7每秒Requests per second幾乎相同,並且比橘紅色的PHP5.5快上了一倍以上的每秒Requests per second,當然PHP5.5本身就已經比PHP5.3快上了許多。
就以每秒Requests per second來看,PHP7與HHVM就比最低的PHP5.3能多處理15個請求量,比PHP5.5多處理10個請求量,這代表在相同伺服器的情況下,PHP7或HHVM比起PHP5.3、5.5可以接納更多的人瀏覽網站。
以下測試數據:
首頁平均每個要求所花費的時間(單位: 豪秒)
PHP5.3是2094.518 [ms]
PHP5.5是1071.983 [ms]
PHP7 是508.262 [ms]
HHVM 是409.415 [ms]
Node頁平均每個要求所花費的時間(單位: 豪秒)
PHP5.3是 1489.939 [ms]
PHP5.5是 639.126 [ms]
PHP7 是 391.538 [ms]
HHVM 是 354.449 [ms]
3.測試結論
PHP7與HHVM可謂壓倒性的勝利,但是其實Drupal在PHP7與HHVM的環境下仍然有些核心相容性問題,目前Drupal 7.x 中,仍有大多數模組並不支援PHP7,而HHVM 3.11.1中,也有部份跟Drupal7衝突到,所以我們目前得到的數據上來看,最穩定與最快速的就是PHP5.5了。
註:目前我們在使用 PHP5.6 版本下測試運作沒有問題,可以的話也快點跟上升級吧!
Web Server 版本測試
如果PHP版本會影響速度,那網站伺服器 Web Server 換上號稱輕量的NGINX又會如何呢? 讓我們繼續測下去。
1.測試環境
還是利用 Docker 建立起多個 container 來安裝不同版本的 NGINX(1.4.6、1.8.1),測試軟體還是為 ApacheBench,使用相同測試方法與目標來觀察每秒的處理量(每秒Requests per second)與平均每個要求所花費的時間(ms)。
2.測試結果
NGINX1.8.1比NGINX1.4.6的每秒處理量,首頁上有些微的上升,尤其在node頁裡面則是更為明顯。
首頁平均每個要求所花費的時間(單位: 豪秒)
NGINX 1.4.6 是 1323.208 [ms]
NGINX 1.8.1 是 1122.079 [ms]
node頁平均每個要求所花費的時間(單位: 豪秒)
NGINX 1.4.6是876.339 [ms]
NGINX 1.8.1是704.517 [ms]
3.測試結論
NGINX1.4.6版與1.8.1版的測試中,1.8.1版本雖然看起來只有小小的贏過1.4.6,但是仍然有進步,而且比起1.4.6版1.8.1版的每個要求處理時間較短,更短的要求的處理時間,也等於網頁的顯示時間更快。
總結
經過上面的測試之後,我們可以知道PHP與NGINX在處理Drupal上的速度有著密不可分的搭配選擇,可以說是網站很重要的一環,結果看來目前測過效能與相容性較好的組合,可以說就是 PHP5.6+NGINX最新版了。
如果還不滿意你的網站伺服器反應速度,除了更換新主機外,這些組合能更新就快上吧!
註:本次測試還沒探討透過其他快取、壓縮機制來得到的提升,但看到這邊的你,一定跟我們一樣相信只會更好不會更差哦(如果你的選擇跟我們一樣的話XD)。
歡迎大家一起來分享,你測試過後最好的搭配吧!