centos7 apache2.4 測試

物理環境

VPC,64C,8G,SSD

安裝環境

centos7

apache2.4

php5.4

均使用YUM安裝。

默認配置。

創建phpinfo

echo "<?php phpinfo(); ?>" >> /var/www/html/index.php

使用ab,phpinfo進行測試

出現socket錯誤繼續進行(-r Don't exit on socket receive errors.)

使用HTTP KeepAlive功能(-k ,避免apr_pollset_poll: The timeout specified has expired (70007)錯誤)


使用ulimit -n增加文件打開數量

ulimit -n 65535

第一次測試

ab -r -n 20000 -c 100 'http://127.0.0.1/index.php'

測試期間,新建一個會話,統計httpd進程數。

ps -ef|grep httpd|wc -l
259

最多的時候是259個進程,基本符合默認配置最多256個httpd進程



查看apache2.4 mpm默認配置

cat /etc/httpd/conf.modules.d/00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:
# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
#LoadModule mpm_event_module modules/mod_mpm_event.so

apache2.4 默認使用prefork模式,默認設置這裏沒有顯示,需在官網查詢

打開查詢網址

http://httpd.apache.org/docs/2.4/mod/prefork.html

發現prefork模式有以下配置

StartServers(啓動時進程數,默認5)
MinSpareServers(最小空閒進程數,默認5)
MaxSpareServers(最大空閒進程數,默認10)
MaxRequestWorkers(最大進程數,不可大於serverlimit,默認256)
MaxConnectionsPerChild(每個進程處理任務數,達到後重啓進程,默認0,不重啓)
ServerLimit(程序最大進程數,默認256)
ListenBacklog(超過MaxRequestWorkers最大服務請求,將連接進行排隊,默認隊列長度511)

參數調整邏輯,將以下參數

StartServers
MinSpareServers
MaxSpareServers
MaxRequestWorkers
ServerLimit

設置成同一數值,避免httpd進程數出現變化,造成性能不穩定。


不重啓進程,節約cpu。生產環境需設置一個較大數值,避免內存泄漏。

MaxConnectionsPerChild 0

將隊列調高,將來不及處理的鏈接都進行排隊

ListenBacklog 10000


ab測試的時候加上-r -k參數,避免出現小錯誤時候停止測試.

-n 代表總測試次數,-c 代表每秒測試次數

ab -k -r -n 1000000 -c 512 'http://127.0.0.1/index.php'

新建會話使用top(這裏推薦htop)觀察內存,cpu佔用情況,如出現cpu或內存超過80%負荷(在保證最高負荷時的穩定性,一般不推薦超過80%負荷,這是個人經驗,無測試依據)情況,同步降低所有參數。


其實一般情況下默認的參數就夠用的,如果你的設備性能非常好,才需要慢慢調整配置。

測試一次,調整一次,避免負優化。


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