• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 問一個apache端口filtered的老問題

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    我有一臺服務器,運行著apache,用戶訪問量非常大,大概高峰時期,同時在線2000人左右.偶爾會出現如下情況(用nmap掃描結果): 80/tcpfilteredhttp 這樣,網站就無法訪問了.不得不重啟apache才能恢復正常. 出現這種情況時,有時內存使用較高,會啟用較多的swap,500M左

    我有一臺服務器,運行著apache,用戶訪問量非常大,大概高峰時期,同時在線2000人左右.偶爾會出現如下情況(用nmap掃描結果):
    80/tcp filtered http
    這樣,網站就無法訪問了.不得不重啟apache才能恢復正常.
    出現這種情況時,有時內存使用較高,會啟用較多的swap,500M左右.我的物理內存為1G.有時好象apache進程非常多,可能有10多個,一般正常情況下,大概8個左右.我的Apache是以mpn=worker來編譯的.
    請高手指點,這可能是什么原因,如何防范這種情況的發生.謝謝!

     peng 回復于:2004-10-22 09:12:05
    問題描述的太籠統了。。

    你的web是什么樣子的?靜態頁面還是php  or jsp?
    還有,不能訪問的時候,apache日值報什么錯誤?
    系統性能檢測的時候,是什么伏在狀況???

    還有,你的apache具體的worker模塊的設置參數是什么啊。。
    分析一個問題,要多方面的排除啊。。
    很少有問題一下就能知道的。。

     yesright 回復于:2004-10-22 11:55:25
    我的服務器有一個行業咨訊網站,apache2+php4+mysql4
    分前臺和后臺,前臺全部是HTML頁面,后臺是php網站生成系統.
    根據不同的頁面,更新為每3秒到幾分鐘不等.
    服務器配置為:dell2650/2cpu 2.8G/1G mem
    同時在線人數一般為500--2000人不等.流量為3--8M
    apache日志已經作了日志滾動,每天生成一個日志,大概1.5G左右.
    下面附有一張mrtg圖,有標示當時的情況.大概在10月21號23:30左右出現故障.
    [url]http://www.yesright.com/mrtg.mht[/url]

     peng 回復于:2004-10-22 12:05:04
    嗯,這么說是用新聞編輯器來生成的。
    你的后臺是apache2+mysql+php4,前臺也是放在這個機器上吧。

    也就是說,通過虛擬主機來實現不同域名的訪問,來區分前后臺的。

    如果是靜態頁面,apache2估計1g的內存是不能支持2000條http的同時訪問的。負載比較嚴重。
    還有,你把你的httpd.conf文件關于mpm=worker的那個參數帖出來,我要看看你的參數連接設置是什么,發生這種filter是由于軟限制還是硬限制產生的。。

     yesright 回復于:2004-10-25 14:41:21
    謝謝peng,沒錯,我的html和發布系統在同一臺服務器上,現在正準備做負載平衡.
    我的httpd.conf中worker.c的配置如下:
    $ cat /usr/local/apache2/conf/httpd.conf |grep worker.c -A 10
    <IfModule worker.c>
    StartServers         2
    MaxClients         3000
    ServerLimit        60
    MinSpareThreads     25
    MaxSpareThreads     75
    ThreadsPerChild     50
    MaxRequestsPerChild  0
    </IfModule>

    服務器cpu一般負載在70%到95%
    我的服務器在高峰期已經達到了apache的MaxClients 3000,從www.yesright.com/onlinehttpd.png可以看到,已經一條直線了.
    在最高峰期(在線httpd統計3000時),交換分區會用到1000M左右.
    請問我的worker.c能不能加大MaxClients,我有點怕服務器忙不過來,而造成apache死掉.

    下面附有一張昨天的內存使用圖和在線人數的mrtg圖
    www.yesright.com/mem.png
    www.yesright.com/onlinehttpd.png

     peng 回復于:2004-10-25 15:21:51
    你的物理內存是有點小,可以這樣試試。

    增大線程,縮小進程看看。。

    <IfModule worker.c>
    StartServers        4
    ServerLimit         128
    ThreadLimit         256
    MaxClients         4096
    MinSpareThreads     64
    MaxSpareThreads     128
    ThreadsPerChild     64
    MaxRequestsPerChild  0
    </IfModule>

    在web的大訪問量期間,要有人守候,因為是生產機,最好監測一下。
    如果條件允許,最好能擴大物理內存,不能讓內存使用到100%。還有,swap分區最好是物理內存的3-4倍,防止程序編寫的錯誤。

    分析一下日志,看看高峰期的時候,apache的連接ip都是那些,統計一下,有沒有攻擊或者不正常的情況,如果多數是從幾個固定ip連接過來的,就要分析一下了。。

     yesright 回復于:2004-10-25 16:42:13
    謝謝你的建議,我會在接下來的一周進行測試.

     yesright 回復于:2004-10-25 17:06:39
    我想借此機會,請教一下負載均衡的問題(假定以后發展到同時10000人在線).
    我的負載均衡僅僅只要求apache的html頁面的負載均衡,因為我服務器的瓶頸在內存上和IO上.

    我的初步設想如下:
    一臺后臺服務器,專門做html的生成
    用兩臺服務器作前臺,提供html訪問
    負載均衡采用DNS輪詢
    html發布采用nfs.(例如:把兩臺前臺的網站主目錄mount到后臺服務器上,發布時同時復制兩份到前臺)

    這只是小弟的初步設想,請大家多多指教.

     peng 回復于:2004-10-25 17:37:28
    如果想同時支持10000人的話,在普通的pc server上,做負載均衡是必須的了。

    我看到你的方案,如果在10000人以上,面臨的三個問題:http的大請求量、硬盤的io負載,還有就是內存了。。

    對于你的解決方案,如果用nfs的話,是解決不了io的問題。
    其實你可以這樣:apache+squid的。。


    1、1臺apache的主機,做新聞發稿器來生成主頁。同時,這個機器提供遠程的nfs的磁盤存貯。
    2、前端2臺主機做發布主機,一臺安裝apache+squid,另一臺只安裝squid。

    原理:發布的主機接受到用戶的訪問請求,是要訪問后臺的新聞發稿器的磁盤,這樣,每增加一個前端的機器,就是增加一份對io的請求。io的請求是不會降低,而是增高的。所以,同squid做反相代理,來相應用戶的http的請求。訪問后,會在本機的squid的cache中存放數據。當用戶再訪問這個數據時候,squid是讀取本機上的cache,而不是遠程nfs連接的數據,從而大大的降低了硬盤的io讀寫。把io負載充分的分散到前端的兩個主機本身的硬盤上了。而且,你你發布的是新聞,新聞更新的速度不是很快的,就是說,用戶既大多數都在訪問squid的cache,從而更能體現出squid的好處了。

    第一主機用apache+squid,其中的apache是起到讀取后臺的硬盤的作用。前端的squid通過80端口來相應用戶請求。另一臺機器也是squid的80端口相應用戶,對于新的請求,連接第一臺機器,讓第一個機器的apache來訪問后臺主機的數據硬盤。

    軟件構建就是這樣的:

    新聞發稿器(apache+nfs server)--apache主機(第一太主機)--squid(兩個對外相應的機器)。

    如果你前端用三臺機器,是最好的選擇。兩個主機裝squid,一個主機就安裝apache。通過dns論許,http請求均勻的發送到三個主機上。統計那個apache主機,乘以3,就是所有的網站pv了。。這里主意一點,就是squid好像軟件請求的極限是3000個httpd相應。

    之所以用1個apache +2個squid,是因為squid沒有辦法做訪問統計。

    還有,這種結構,隨著你的應用增加,只需要增加你的squid機器就可以了。當前端的apache負擔增大的時候,可以在squid主機上在安裝apache來均分squid請求就ok了。。

    大多數的門戶網站都是用了這種apache+squid的配置結構。當然了,很多有錢的公司,直接就買了cache服務器,例如.netapp公司的netcache就是專門干這個的,替代了主機裝squid來做cache。

     yesright 回復于:2004-10-25 23:47:42
    謝謝你詳細的建議,做squid代理可能不能適合我的要求
    因為我的服務器不是真正的新聞服務器,是一種類行業咨訊提供系統.
    就象pconline.com.cn,同步各地區行情,或是足球的賠率網站,實時同步全球頂級聯賽數據,系統時刻在更新,我的首頁每三秒會更新一次,有些幾分鐘更新,是通過調用一個xml(或者說是一個數組),實時性太強了.可能代理方案是行不通的.

     peng 回復于:2004-10-26 09:31:47
    如果是這樣的話,就要根據實際情況測試一下了。最好后臺的服務器買個sun sparc的。。當然了,如果有條件,建議添加一個小的陣列,這樣來做nfs的存儲空間,能很好的解決磁盤io問題。。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>