一、基準測試
php網站優化最佳實踐:優化前端(壓縮js/css/images)--->程式優化(編碼最佳實踐、opcode快取、變數/資料快取)--->資料庫、伺服器調優-->作業系統調優
1、基準測試實用工具
定義請求/響應生命週期
典型的http請求包含正在嘗試訪問的主機資訊、瀏覽器資訊以及對web伺服器有用的其他資訊。
1)Apache 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有三種處理模式(perform、worker、winnt)首先檢視MPM的處理模式
然後檢視httpd.conf,載入MPM模組
修改httpd-mpm.conf
2)Siege
①安裝Siege
②執行Siege
測試指標
幾個關鍵的指標:
Data transerred:響應資料的總大小(不包含頭資料)
Transaction rate:每秒要響應的事務總數
Longest transaction:滿足一個請求所需的最長時間
Shortest transaction:滿足一個請求所需的最短時間 9.85 trans/sec
③測試多個url
在/usr/local/etc/urls.txt
測試
測試結果:
二、提高客戶端下載和呈現效能
工具:
1.分析響應(Firebug、YSlow和Page Speed)
2.優化響應(YUI compressor,Closure Compiler和Smush.it),利用這些工具壓縮JavaScript、CSS以及網頁所需的影像。
三、PHP程式碼優化
php相關效能說明的列表:
http://talks.php.net/index.php/PHP
(1) require和require_once
程式碼測試:
require_once_test.php內容:
幾個類檔案只是定義了一個空類
每秒處理 1077.93個請求,處理時間為9.277ms
測試require:
require_test.php內容:
其他檔案還是定義一個空類
測試結果:
可以看出,每秒的請求數從1077個到1612個請求,響應時間從9秒降到6秒。
(2)提前計算迴圈長度
for1.php:
for2.php:
連續執行這兩個檔案,發現後者比前者快好多