<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 如何合理設置apache httpd的最大連接數? 查看httpd進程數(即prefork模式下Apache能夠處理的并發請求數): ~~~ ps -ef | grep httpd | wc -l ~~~ 返回結果示例:1388 表示Apache能夠處理1388個并發請求,這個值Apache可根據負載情況自動調整,我這組服務器中每臺的峰值曾達到過2002。 查看Apache的并發請求數及其TCP連接狀態 ~~~ netstat -n | awk '/^tcp/ {++state[$NF]} END {for(a in state) print a, state[a]}' ~~~ 返回結果示例: ~~~ LAST_ACK 5 SYN_RECV 30 ESTABLISHED 1597 FIN_WAIT1 51 FIN_WAIT2 504 TIME_WAIT 1057 ~~~ * SYN_RECV表示正在等待處理的請求數; * ESTABLISHED表示正常數據傳輸狀態; * TIME_WAIT表示**處理完畢**,等待超時結束的請求數。 手頭有一個網站在線人數增多,訪問時很慢。初步認為是服務器資源不足了,但經反復測試,一旦連接上,不斷點擊同一個頁面上不同的鏈接,都能迅速打開,這種現象就是說明apache**最大連接數**已經滿了,新的訪客只能排隊等待有空閑的鏈接,而如果一旦連接上,在keepalive 的存活時間內(KeepAliveTimeout,默認5秒)都不用重新打開連接,因此解決的方法就是加大apache的最大連接數。 ### 在哪里設置? ~~~ <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> ~~~ ### 要加到多少? 連接數理論上當然是支持越大越好,但要在服務器的能力范圍內,這跟服務器的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> ~~~ 注意,MaxClients默認最大為250,若要超過這個值就要顯式設置ServerLimit,且ServerLimit要放在MaxClients之前,值要不小于MaxClients,不然重啟httpd時會有提示。 重啟httpd后,通過反復執行pgrep httpd|wc -l 來觀察連接數,可以看到連接數在達到MaxClients的設值后不再增加,但此時訪問網站也很流暢,那就不用貪心再設置更高的值了,不然以后如果網站訪問突增不小心就會耗光服務器內存,可根據以后訪問壓力趨勢及內存的占用變化再逐漸調整,直到找到一個最優的設置值。 >[danger] 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 ### 調大緩存 并發用戶請求數大于150的話;有可能會出現連接請求超時的情況。如果我們的**接收連接的緩存**不夠大的話,有些用戶的請求連接都無法接收下來。不管服務器是否能夠處理,都應該把請求接收下來再說。我們可以調大該緩存: ~~~ # cat /proc/sys/net/ipv4/tcp_mem 46368 61824 92736 # cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 1978368 # cat /proc/sys/net/ipv4/tcp_wmem 4096 16384 1978368 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看