2017年2月17日 星期五

Apache 的 override 對效能的影響

最近,有一台伺服器,因為效能太差,CPU 的效能一直被吃光。有同事想要把它換成號稱無敵的 Nginx。 但是在網路上,看到一些討論,在動態網頁上,效能取決於 PHP,Nginx 未必較好。而 Apache 的效能,則受到 override 的影響很大,若將其關閉,則動態網頁可能完勝 Nginx。

測試條件

硬體:CPU *2、4GB 記憶體
軟體:Apache 2.4.25 / PHP 7.0.15
64824 條 rewrite rule,大概長得像這樣
Redirect /981ccp https://ceiba.net/course/6a06f1/index.htm

指令:ab -c 100 -n 1000 http://10.161.91.212/tmp/phpinfo_x.php

Document Length:        78741 bytes
Concurrency Level:      100

AllowOverride none

Time taken for tests:   0.804 seconds
Complete requests:      1000
Failed requests:        97
   (Connect: 0, Receive: 0, Length: 97, Exceptions: 0)
Total transferred:      78925892 bytes
Requests per second:    1243.75 [#/sec] (mean)
Time per request:       80.402 [ms] (mean)
Time per request:       0.804 [ms] (mean, across all concurrent requests)
Transfer rate:          95863.61 [Kbytes/sec] received

CPU 使用率:2 個 CPU 大約 50%
記憶體使用率:523MB

AllowOverride  All

Time taken for tests:   49.415 seconds
Complete requests:      1000
Failed requests:        80
   (Connect: 0, Receive: 0, Length: 80, Exceptions: 0)
Total transferred:      78925914 bytes
Requests per second:    20.24 [#/sec] (mean)
Time per request:       4941.538 [ms] (mean)
Time per request:       49.415 [ms] (mean, across all concurrent requests)
Transfer rate:          1559.76 [Kbytes/sec] received

CPU 使用率:2 個 CPU 皆 100%
記憶體使用率:最高 2GB,大約在 1GB 至 1.5GB 之間

討論

從上面的結果來看,6萬多條的 rewrite rule,在此測試中,並沒有派上用場,但為了處理那些 rule,要多耗 1GB 的記憶體,並且拖垮 CPU。

沒有留言: