增大apache 2的最大連線數

2021-08-27 06:08:43 字數 3066 閱讀 6725

增大apache 2的最大連線數 apache2.0中新加入了serverlimit指令,使得無須重編譯apache就可以加大maxclients。

首先要做的是確認apache的工作模式 prefork?還是其他的,一般預設的就是prefork,如果不確定,有乙個簡單的辦法可以測試出來。

修改每種工作模式的startserver值(不重複),然後重起apache,執行ps aux | grep http看看有幾個apache程序,就能知道對應的那種工作模式。

有兩處是需要密切注意的:

1。serverlimit 2000 這一行要放在段的最上面

2。必須要stop然後再start才能生效。restart是無效的。

下面是我的prefork配置段。

serverlimit 2000

startservers 10

minspareservers 10

maxspareservers 15

maxclients 1500

maxrequestsperchild 10000

serverlimit的最大值是20000,這對於大多數站點一級絕大多數伺服器來說是足夠了,但如果你一定要再加大的話,那麼這個值位於源**樹下的server/mpm/prefork/prefork.c中。裡面的

#define default_server_limit 256

#define max_server_limit 20000

這兩行就對應著maxclients和serverlimit的限制值。但我相信很少有人可以用到20000的併發連線數。 ---------------合理設定apache httpd的最大連線數2008-05-29 16:58

檢視當前的連線數可以用:

或:pgrep httpd|wc -l

實時檢測httpd連線數:

1.在**設定?

伺服器的為freebsd 6.2 ,apache 2.24,使用預設配置(freebsd 預設不載入自定義mpm配置),預設最大連線數是250

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

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

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

startservers 5

minspareservers 5

maxspareservers 10

maxclients 150

maxrequestsperchild 0

2.要加到多少?

連線數理論上當然是支援越大越好,但要在伺服器的能力範圍內,這跟伺服器的cpu、記憶體、頻寬等都有關係。

檢視當前的連線數可以用:

或:pgrep httpd|wc -l

計算httpd占用記憶體的平均數:

由於基本都是靜態頁面,cpu消耗很低,每程序占用記憶體也不算多,大約200k。

伺服器記憶體有2g,除去常規啟動的服務大約需要500m(保守估計),還剩1.5g可用,那麼理論上可以支援1.5*1024*1024*1024/200000 = 8053.06368

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

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

startservers 5

minspareservers 5

maxspareservers 10

serverlimit 5500

maxclients 5000

maxrequestsperchild 100

注意,maxclients預設最大為250,若要超過這個值就要顯式設定serverlimit,且serverlimit要放在maxclients之前,值要不小於maxclients,不然重啟httpd時會有提示。

重啟httpd後,通過反覆執行pgrep httpd|wc -l 來觀察連線數,可以看到連線數在達到maxclients的設值後不再增加,但此時訪問**也很流暢,那就不用貪心再設定更高的值了,不然以後如果**訪 問突增不小心就會耗光伺服器記憶體,可根據以後訪問壓力趨勢及記憶體的占用變化再逐漸調整,直到找到乙個最優的設定值。

(maxrequestsperchild不能設定為0,可能會因記憶體洩露導致伺服器崩潰)

更佳最大值計算的公式:

apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2

apache_max_process = apache_max_process_with_good_perfermance * 1.5

----------------- 1、maxrequestsperchild不能設定為0,最好設定為乙個相對不大的數字,防止httpd程序有意外的記憶體洩露(當然,也不建議設定為 1,否則apache就會不停的fork新的程序了,cpu的資源也就過多消耗了);

最大連線數 Linux的檔案最大連線數

too many open files 檢視當前作業系統連線數設定 ulimit a修改伺服器最大連線數 vim etc security limits.conf新增 soft nofile 65535 hard nofile 65535 soft nproc 65535 hard nproc 65...

合理設定apache的最大連線數

1.在 設定?伺服器的為freebsd 6.2 apache 2.24,使用預設配置 freebsd 預設不載入自定義mpm配置 預設最大連線數是250 在 usr local etc apache22 httpd.conf中載入mpm配置 去掉前面的注釋 可見的mpm配置在 usr local e...

如何設定Apache中的最大連線數

apache的主要工作模式有兩種 prefork和worker 一 兩種模式 prefork模式 預設模式 prefork是unix平台上的預設 預設 mpm,使用多個子程序,每個子程序只有乙個執行緒。每個程序在某個確定的時間只能維持乙個連線,效率高,但記憶體佔用量比較大。這個多路處理模組 mpm ...