高性能 PHP7 * 壓力測試

應用程序在經過開發、測試、調試和分析優化之後,就可以投入生產了。然而,在部署到生產環境之前,有必要對應用程序進行壓力/負載測試。壓力測試可以提供運行應用程序的服務器在單位時間內處理請求數量的評估結果,根據這個評估結果,我們可以優化程序、Web服務器、數據庫和緩存,進而獲得更好的性能。

本章包括以下幾方面內容:

  • Apache JMeter
  • ApacheBench (ab)
  • Siege
  • 在 PHP 5.6 和 PHP7 上對 Magento2 進行壓力測試
  • 在 PHP 5.6 和 PHP7 上對 Drupal 8 進行壓力測試
  • 在 PHP 5.6 和 PHP7 上對 WordPress 進行壓力測試

Apache JMeter

Apache JMeter 是一個開源的圖形界面工具,用於對服務器的性能進行壓力測試。JMeter完全用Java編寫,因此可以運行在所有支持 Java 的操作系統上。略。

ApacheBench (ab)

ApacheBench (ab) 是一個命令行工具,你如果安裝了Apache,就也安裝了ab。

使用:

ab –n <Number_Requests> -c <Concurrency> <Address>:<Port><Path> 

參數:

  • n:發送測試請求的總數目。
  • c:併發量,即一次同時發出的請求數目。
  • Address:應用的域名或Web服務器的IP。
  • Port:應用的端口號。
  • Path:進行壓力測試的應用的路徑,首頁使用斜槓(/)。

示例:

ab -c 50 -n 500 https://www.baidu.com/

由於Web服務器的默認端口號是80,所以不用指明80端口。注意命令末尾的斜槓,在此處是有必要的,因爲它表示路徑。執行完上面的命令之後,我們將會看到如下圖所示的輸出。

圖中包含一些有用的信息:

  • 每秒請求數(Requests per second)爲240.08;
  • 壓力測試所用的總時間 (Time taken for tests)爲2.083秒;
  • 最短時間請求爲163ms;最長時間請求爲458ms。

通過增加請求數和併發量,同時觀察服務器的性能,我們可以知道服務器的負載上限。

Siege

Siege 是另一款用於測試負載和性能的開源命令行工具,它是一個HTTP/FTP負載測試和基準測試實用程序。

安裝:

> wget http://download.joedog.org/siege/siege-4.0.4.tar.gz
> tar -xzvf siege-4.0.4.tar.gz; cd siege-4.0.4
> ./configure; make
> make install

# 查看版本
> siege –V

使用:

siege http://test.com

-f urls.txt 制定多個 url 的文件
-c 指定併發數
-r 指定測試的次數
-t 持續測試時間
# -r和-t一般不同時使用

Siege 啓動測試後,使用Ctrl+C來結束測試,得到如 下輸出:

在上圖中,我們可以看到事務數目(Transactions)、響應時間(Response Time)、事務率 (Transaction rate)、最長時間事務(Longest transaction)、最短時間事務(Shortest transaction)等信息。

實際項目中應用程序的壓力測試

我們將對 Magento 2、Drupal 8 和 WordPress4 進行壓力測試,所有開源應用程序將使用它們的默認數據;

有三臺配置了 Nginx 作爲Web服務器的 VPS。第一臺 VPS 安裝了 PHP 5.5-FPM,第二臺安裝了 PHP 5.6- FPM,第三臺安裝了 PHP 7-FPM,三臺VPS的硬件配置完全相同,所有待測試的應用程序使用相同的數據和版本。

(書說)測試結果:

  • Magento運行在PHP 7上比在PHP 5.6上快241%,比在PHP 5.5上快320%,PHP 7相對於PHP 5.6和 PHP 5.5有着巨大的性能提升。
  • WordPress運行在PHP 7上比在PHP 5.6上快135%,比在PHP 5.5上快182%。
  • Drupal 8運行在PHP 7上比在PHP 5.6上快178%,比在PHP 5.5上快205%。

可見,使用PHP 7總能獲得比使用PHP 5.6和PHP 5.5更好的性能。

-- 參考:《高性能PHP7,Learning PHP7 High Performance》

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