剛剛發完blog卻發現居然連自己都連不上網頁,看了一下Apache的error.log,發現了下面一段訊息:
Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting
真恐怖,ThreadsPerChild的預設值是50還不夠用,害我以為伺服器出了什麼問題,還好很快就排除了,目前把上限給調到了500,這樣應該就不會不夠了吧@@
順便引一下剛剛網路上找到的資料,作為以後修改的依據。
以下引自技術人部落 Technique Blog | Apache Server 設定限制Client連接數量
有時候可能Server本身硬體上有一定的限制無法承受大量使用者不斷的連接上來,當然架設網站的人總是要設想一下
當自己的網站ㄏㄤ到不行的時候,這樣的問題該怎麼辦.......現在很多人在Windows會使用Apache來當Server因為方便好用,但是對於Windows這樣不穩定的系統
有時候就需要控制一下連接到Server的Client數了。
Apache Server幾個設定各位可以參考看看......
1. MaxClients : 此直最大是256,他的意思是說可以連接到Server上最大的數量,所以當Over這個數量的時候一定要等到
有Free出來的Process才可以提供另外一個Client在連線上來。
2. MaxRequestsPerChild : 此設定是連接的每一個Process可以要求最大Thread的數量,Win32系統建議值是0
3. ThreadsPerChild : 這是告訴Server可以處理最大的Thread數量是多少,當然你必須要依據Server的狀況來設定,如果設定太大可能Server吃不下來最後可能會造成當機。(這個設定只符合Win32使用,Unix系統必須參考其他設定值)這裡大家一定會有疑問,到底MaxClients與ThreadsPerChild有何不同?
其實MaxClients是設定最大的連接數,IE每對網頁一個Request就是一個Connection(Process),我們就只服務到這個最大量,絕不超過,那ThreadPerChild呢?
這是在設定對於每個Process我能提供的服務(Thread),因為進入到你的網頁你總是會提供一些服務,那就是你可以提供的量。
所以MaxClients*ThreadPerChild就是你提供服務的最大量了。
你可以調整看看什麼樣的情況下你的Server可以達到一個最穩定的狀況。
(目前尚無評論)