歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 網站優化 apache httpd最大連接數設置

網站優化 apache httpd最大連接數設置

日期:2017/3/2 16:33:07   编辑:Linux服務器

手頭有一個網站在線人數增多,訪問時很慢。初步認為是服務器資源不足了,但經反復測試,一旦連接上,不斷點擊同一個頁面上不同的鏈接,都能迅速打開,這種現象就是說明apache最大連接數已經滿了,新的訪客只能排隊等待有空閒的鏈接,而如果一旦連接上,在keeyalive 的存活時間內(KeepAliveTimeout,默認5秒)都不用重新打開連接,因此解決的方法就是加大apache的最大連接數。

  1.在哪裡設置?

  服務器的為FreeBSD 6.2 ,apache 2.24,使用默認配置(FreeBSD 默認不加載自定義MPM配置),默認最大連接數是250

  在/usr/local/etc/apache22/httpd.conf中加載MPM配置(去掉前面的注釋):

  # Server-pool management (MPM specific)

  Include etc/apache22/extra/httpd-mpm.conf

  可見的MPM配置在/usr/local/etc/apache22/extra/httpd-mpm.conf,但裡面根據httpd的工作模式分了很多塊,哪一部才是當前httpd的工作模式呢?可通過執行 apachectl -l 來查看:

  Compiled in modules:

  core.c

  prefork.c

  http_core.c

  mod_so.c

  看到prefork 字眼,因此可見當前httpd應該是工作在prefork模式,prefork模式的默認配置是:

  <IfModule mpm_prefork_module>

  StartServers 5

  MinSpareServers 5

  MaxSpareServers 10

  MaxClients 150

  MaxRequestsPerChild 0

  </IfModule>

  2.要加到多少?

  連接數理論上當然是支持越大越好,但要在服務器的能力范圍內,這跟服務器的CPU、內存、帶寬等都有關系。

  查看當前的連接數可以用:

  ps aux | grep httpd | wc -l

  或:

  pgrep httpd|wc -l

  計算httpd占用內存的平均數:

  ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'

  由於基本都是靜態頁面,CPU消耗很低,每進程占用內存也不算多,大約200K。

  服務器內存有2G,除去常規啟動的服務大約需要500M(保守估計),還剩1.5G可用,那麼理論上可以支持1.5*1024*1024*1024/200000 = 8053.06368

  約8K個進程,支持2W人同時訪問應該是沒有問題的(能保證其中8K的人訪問很快,其他的可能需要等待1、2秒才能連上,而一旦連上就會很流暢)

  控制最大連接數的MaxClients ,因此可以嘗試配置為:

  <IfModule mpm_prefork_module>

  StartServers 5

  MinSpareServers 5

  MaxSpareServers 10

  ServerLimit 5500

  MaxClients 5000

  MaxRequestsPerChild 100

  </IfModule>

12下一頁

Copyright © Linux教程網 All Rights Reserved