PHP - 《高效能php應用開發》學習筆記

weixin_30639719發表於2020-04-05

一、基準測試

php網站優化最佳實踐:優化前端(壓縮js/css/images--->程式優化(編碼最佳實踐、opcode快取、變數/資料快取)--->資料庫、伺服器調優-->作業系統調優

 

 

1、基準測試實用工具

定義請求/響應生命週期

典型的http請求包含正在嘗試訪問的主機資訊、瀏覽器資訊以及對web伺服器有用的其他資訊。

 

 

1Apache Benchmark

例項:

D:\Webdev\bin\apache\apache2.2.22\bin>ab -n 10000 -c 50 http://localhost/phpinf

.php

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

 

Benchmarking localhost (be patient)

Completed 1000 requests

Completed 2000 requests

Completed 3000 requests

Completed 4000 requests

Completed 5000 requests

Completed 6000 requests

Completed 7000 requests

Completed 8000 requests

Completed 9000 requests

Completed 10000 requests

Finished 10000 requests

 

 

Server Software:        Apache/2.2.8

Server Hostname:        localhost

Server Port:            80

 

Document Path:          /phpinfo.php

Document Length:        52477 bytes      

Concurrency Level:      50

Time taken for tests:   22.932 seconds

Complete requests:      10000

Failed requests:        2158

   (Connect: 0, Receive: 0, Length: 2158, Exceptions: 0)

Write errors:           0

Total transferred:      526424140 bytes    #傳輸的總資料大小(以位元組為單位);

HTML transferred:       524774140 bytes

Requests per second:    436.07 [#/sec] (mean)   #web伺服器在模擬流量下每秒可以支援的請求總數;

Time per request:       114.660 [ms] (mean)   #完成一個請求所花費的最長時間(以毫秒為單位)

Time per request:       2.293 [ms] (mean, across all concurrent requests) #完成一個請求所花費的最長時間(以毫秒為單位)

Transfer rate:          22417.81 [Kbytes/sec] received

 

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    0   1.9      0      16

Processing:    16  114  32.4    109     468

Waiting:        0  109  26.6    109     281

Total:         16  114  32.4    109     468

 

Percentage of the requests served within a certain time (ms)

  50%    109

  66%    109

  75%    125

  80%    125

  90%    140

  95%    172

  98%    203

  99%    218

 100%    468 (longest request)

 

安裝

 

 

②執行Apache Benchmark

 

 

③弄清響應的含義

 

 

關鍵欄位:HTML transferred(整個模擬傳輸的內容正文的總大小)Request per second(每秒支援的請求總數)、Time per request(滿足一個請求需要花費的總時間)

目標:減少HTML transferred、提高Request per second並且降低Time per request

連線指標細目分類:

 

 

ab選項標記

 

 

 

 

 

 

 

 

 

⑤併發測試

 -c的值必須小於等於n的值

 

 

⑥時間測試

 

模擬10個使用者在20秒的時間內同時訪問網站

 

 

 

 

 

 

 

7 ab陷阱

ab - n http://localhost/而不是ab -n http://localhost,加上/

設定使用者代理:

 

 

⑧、修改apache併發數

apache處理併發是通過MPM模組完成的,MPM有三種處理模式(performworkerwinnt)首先檢視MPM的處理模式

 

然後檢視httpd.conf,載入MPM模組

 

 

修改httpd-mpm.conf

 

 

 

2Siege

①安裝Siege

 

 

 

 

 

②執行Siege

 

 

 

 

測試指標

幾個關鍵的指標:

Data transerred:響應資料的總大小(不包含頭資料)

Transaction rate:每秒要響應的事務總數

Longest transaction:滿足一個請求所需的最長時間

Shortest transaction:滿足一個請求所需的最短時間   9.85 trans/sec

③測試多個url

/usr/local/etc/urls.txt

 

測試

 

 

測試結果:

 

 

二、提高客戶端下載和呈現效能

工具:

1.分析響應(FirebugYSlowPage Speed

2.優化響應(YUI compressor,Closure CompilerSmush.it),利用這些工具壓縮JavaScriptCSS以及網頁所需的影像。

 

 

三、PHP程式碼優化

php相關效能說明的列表:

http://talks.php.net/index.php/PHP

(1) requirerequire_once

程式碼測試:

 

require_once_test.php內容:

 

幾個類檔案只是定義了一個空類

 

 

每秒處理 1077.93個請求,處理時間為9.277ms

 

測試require:

require_test.php內容:

 

其他檔案還是定義一個空類

測試結果:

 

 

可以看出,每秒的請求數從1077個到1612個請求,響應時間從9秒降到6秒。

 

(2)提前計算迴圈長度

for1.php

 

for2.php:

 

 

連續執行這兩個檔案,發現後者比前者快好多

 

 

  





轉載於:https://www.cnblogs.com/luoyunshu/p/4035854.html

相關文章