HonestQiao 回復于:2005-01-25 12:10:53 |
很好,不過可不可以解釋一下子:
如果uptime超過50系統自動重起服務器 我在努力讓我的,uptime超過1000天的啊 |
dowell3000 回復于:2005-01-25 12:33:45 |
這里說的uptime不是服務器運行時間,可能說uptime不是很合適,你在linux 輸入命令uptime,系統會提示系統的德當前的負載情況,他顯示服務器是否是繁忙,一般uptime是1以下的話,說明服務器非常正常,如果出現大量的iowait或者同時大量的http情況,他再輸入uptime看下,可能100或者可能500以上。
一般服務器到50就開始明顯緩慢,可能是web服務器程序設計不合理導致的,導致一些內存泄漏的發生,系統大量使用swap. 這個時候最好能夠重起動下服務器 |
dowell3000 回復于:2005-01-25 12:38:30 |
不應該叫uptime 應該是 load average
老是用命令uptime查load average,所以。。。 |
wangrujun 回復于:2005-02-03 16:06:41 |
uptime要超50呀。你的機器真棒。
一般超10就死掉了。 |
skylove 回復于:2005-02-04 04:07:04 |
一則誤人子弟的文章
不解??那讓我來說說看。。。 1。mod_limitipconn 不是用來加速的,其本身就是為了限制同一個ip的發起數,如果粗淺地說,這個功能的作用和我們機器上的firewall類似。他本身是減慢了服務器的速度,但是其額外的好處是能阻止來自某一個ip的并發申請過大,比如一個用戶開了100個進程來下文件這類情形的發生。因此,這個模塊不是為了加速的,而是為了安全和均衡大多數人的利益; 2。關于php加速的——這類php加速的原理大致如此——把獲得申請頁面暫時保存到xx地方,在一定時間內(比如3秒內)獲得完全一樣的申請請求時,就直接使用緩存頁面,這個可以大量減少php和數據庫連接,生成頁面的時間,而且不會有任何不利影響——至于說php編寫有錯,那么只會是把一個錯誤的文件緩存而已,并不會導致更為嚴重的后果;而且現在不少php程序已經開始主動地使用這類緩沖原理了,比如phpwind論壇就是一個例子。 3。關于syn的攻擊,事實上用syn-cookie的作用不是太明顯,用apache的一個專門防dos的模塊作用更好一些,相反平時用syn-cookie會導致服務器的請求變慢,最常用的做法不是syn-cookie,linux內核里有個參數是調整tcp/ip連接在time_wait2時候的等待值的,那個更有作用用,具體各位可以去查一下。(已知freebsd和openbsd也有,用sysctl可以設置那個參數) 4。別人使用rewrite或者單獨設置虛擬主機是根據別人的環境。比如我在設置虛擬主機的時候,同時需要alisa www.aa.com clearcase/" target="_blank" >cc.aa.com 到aa.com這個名字去呢??或者我要為每個用戶單獨地做流量統計分析呢,流量限制呢,我各個用戶的要按照不同用戶身份跑呢???用rewrite或者虛擬主機配置,是依據需要而來,莫名嘲笑別人1000個虛擬主機設置的才是笨蛋——你以為那真是那人手工配置的?那是程序自動生成的!比如cpanel這些成熟的虛擬主機程序(國內好象用的不多,國外很多)。。 5。apache建立連接的開銷,分析比使用squid反向代理大,所以如果負載比較重,即使是靜態html也是推薦用squid反向代理后更好。 6。負載大于50%的時候,正確的做法是檢查哪個程序消耗了cpu最為厲害,而不是看到apache在用著就重新啟動apache 。作者給的程序在真正實用環境里是沒用的——比如我正在服務器上tar 數據文件,結果cpu過了50%,然后那個程序是自動運行,檢查到此時apache在開著,就不斷地重新啟動apache,這樣有用???正確的做法是檢查了系統負載,進而應該檢查此時apache的負載(perl的負載,mysql的負載) 7。我曾經維護過一臺任務很重的服務器,其cpu利用率超過60%,其中apache 5%,mysql 10%,其他服務程序若干,結果服務器依然運作非常正?!猚pu和內存一樣,買來就是用的,放著99%的空閑你還不若去買個p2 366來用。時常cpu只是用到1%,沒必要沾沾自喜,只能說明你沒充分把機器利用起來,浪費了大好資源而已。 貌似有道理,其實仔細一步步分析下來什么也不是的文章。。。居然還是精華。。。 |
peng 回復于:2005-02-05 15:24:19 |
呵呵。。。
有意思,不懂linux,系統方面的不好說,但是apache方面的,樓主還是應該多交流一下。 |
acaluis 回復于:2005-02-07 09:23:33 |
難道還有人犯這樣的錯誤"忘記關閉數據庫連接"???????????????????
還是不要在這里提這些吧,這樣的錯誤屬于剛入門的程序員犯的. |
dowell3000 回復于:2005-03-03 10:52:51 |
回:skylove
1。mod_limitipconn 是不是用來加速的,但是很多的服務器維護的人員往往在服務器負載較高時候選擇了增加這個模塊試圖降低服務器的負載。所以我寫這份東西的時候只是提個醒。 2。php加速的軟件由于依賴于php版本之上,php版本的更新速度往往比加速軟件的更新速度要快,如果你用過低版本的zend optimizer在php4.3.10上肯定存在問題;Performance Suite3.6.0里面帶的zend optimizer是非常老的,相信你如果在php4.3.10上面用過的話,相信你zend Performance Suite的管理界面都打不來,直接500錯誤了。同樣mmcache我使用了大概3個月時間,發現經常會出現一些古怪的問題,關閉了mmcache以后一切正常,中間那個環節出錯了我還需要仔細查詢下。另外象zend accelerator這樣的軟件需要使用共享內存,程序如果不合理的話,很容易造成共享內存消耗殆盡。 3。關于syn攻擊,使用syn-cookie不能完全解決問題,你說的time_wait2可以探討下,不過在proc里面沒找到相應的值,能夠更改的是tcp_syn_retries的次數,retry一次間隔30秒,如果對方攻擊的機器效率沒有問題的話,在30秒內可以建立足夠的SYN_RECV來消耗你的內存。 4。rewrite只是一個解決問題的方式之一,當然有其他特殊的需要考慮用其他方式 5。squid不做評論 6。特別申明下 cpu利用率跟load average完全是兩個概念,cpu過利用率過50%是很正常的,但是可能load average的值只有1多點;load average是一個系統處理繁忙程序的值,cpu利用率會呼高呼下,但load average是一個相對平穩的值。我很難相信linux在load average 持續50以上能正常工作,繼續增長帶來的結果肯定意味著菪機。你如果tar一堆文件都能導致load average會倒50的話,可以檢查下你的系統,我在機器有著4000個聯結的時候,照樣編譯內核都不會超過50。 7。我很想問下你維護很重的機器MaxClient開到多少,如果超過6000的話留個msn我們探討下,這個一值是我比較困撓的問題 |
dowell3000 回復于:2005-03-03 11:00:33 |
to acaluis
因為php有一個很好的機制在程序退出以后自動關閉數據庫聯結,所以很多程序包括很多軟件都沒有在使用完數據庫以后立即關閉數據庫聯結的習慣?;蛘咴趐hp執行完成前加一個mysql_close(). 對于負載不高的系統這個問題不大,不需要大多的關于,因為php執行完成以后自動會回收資源。 但是如果機器負載很高,php執行的速度變慢以后,沒有及時關閉數據庫的后果肯定是大量的數據庫聯結保持在那里。相信很多你訪問很多php寫的網站(包括一些大型網站)經常出現超過系統最大聯結數的問題 |
skylove 回復于:2005-03-03 19:49:53 |
回樓主:
1.既然不是加速的,為什么原文要寫作加速的?是否有誤導之嫌?? 2.加速軟件支持4.3.10版本的php的,我在使用中一切正常,至于您談到的問題——恐怕真的是您的php寫作上存在問題?? 3.對待ddos,沒有誰敢說自己有能力對付,syncookie也一樣 4.既然你轉而說是解決問題的方式之一,為何在原文中以嘲諷的語氣評價1000個虛擬主機者? 5.squid的加速至少減少了apache申請到html(靜態頁面)時候進行權限判斷,嵌入資源權限判斷等消耗; 6.4000個連接與tar無關,如果您不清楚tar程序可以用做backup作用,那么此問題可以原諒 7.我沒見過人用一臺apache帶真正超過3000并發請求的做法,既然您提到的請求是6000,那么想來您實現過最大連接5000時候的情形? 我不認為這個值可以在一臺機器上做到。 最后一問:如果按照你的說法,你是在寫作此帖以前就明白了那些道理的,那么為什么寫出“xxx加速模塊”這樣的原文,您是對自己的文字不負責,還是對自己在cu的id不負責,或者是對cu的各位讀者們覺得不需要負責?? |
dowell3000 回復于:2005-03-03 21:57:28 |
to skylove : 我有一個服務器高峰的時候是6200個連接,我的msn名字后面加上“apache能開4096個連接嗎”,然后到“apache能開5200個連接嗎?”,每增加連接數而沒有菪機都覺得是很大的成就感。相信在服務器非常高的連接的時候每改進點小東西都能使服務器更加穩定。php程序也因為效率的問題使用了很多共享內存,以減少數據庫的操作,同時linux的內核參數改了很多,到6400以后還是不行,我希望那天能夠到10240.....
關于Zend Optimizer 的版本問題 http://cn2.php.net/downloads.php 這個地址上的紅色部分: Note: Due to an incompatibility between earlier versions of Zend Optimizer and PHP 4.3.10, it's recommended to upgrade to the latest version. 討論不錯,但是你的口氣。。 呵呵。另外我覺得你沒看明白我的回復 因為這個帖子不少人加了我的msn,也包括剛剛接觸linux的,哪怕別人在msn問我非常低級的問題我都會耐心回答的,同樣論壇最重要的是良好的氣氛,不是扣字眼,不管寫的有沒有錯大家一塊來討論,如果自己覺得自己高高在上的話(我覺得你就文字來討論文字了,不是討論里面的內容 :) )...... 沒錯在cu我是新人,但是對于apache我從98年玩到現在,維護的都是大型的網站,如果覺得有問題有一個良好的口氣來討論,而不是。。。 |
skylove 回復于:2005-03-04 23:16:56 |
到底是你在玩字眼還是我在玩??把限制ip寫做是加速的是你還是我?? 這個是概念錯誤還是扣字眼???
如果說這樣是扣字眼,我說:我操你媽的; 然后補一帖子說明其實這句話是我表達對你衷心的贊美你會不會欣然接受?? 我也是就文發言,我也說了,是原文許多地方有問題,因此不該被標作精華,并沒有說懷疑作者的實力云云. 至于98年開始用電腦么? 不好意思,我比你早很多,大概是小學4年級開始用的吧,第一份工作是在一個軍工單位,維護的是vms.用得早不代表什么的. 擺經歷沒意思,我也是就事論事地討論.至于你非要投換概念地說xx加速模塊不支持4.3.10--別人都寫了不支持,你為什么還用? 不是有支持4.3.10的加速模塊可供選擇么?? 最后,我依然定性你的首帖是誤導了菜鳥,至于你覺得是不是,其他新手覺得是不是,我無所謂.此帖我不再回復,仔細想想,其他人的技術高低關我屁事,既然cu那么多高手都可以看到此帖而漠然之,我何必出頭? 就等樓主欣然之,菜鳥鼓舞之,cu帖子興旺之...都高興...甚好,甚好 |
dowell3000 回復于:2005-03-05 08:35:00 |
to skylove :對于閣下的言論,敬仰敬仰 |
zhake 回復于:2005-03-05 14:33:11 |
看到兩位的討論,實在是精彩,我想如果CU是都是像你們這樣的人,那么我們這些來鳥,很快就會變以高手的,
在此,我僅代表所有的來鳥謝謝你們兩位 另外,問兩位一個問題,我想早請一個www.123.com這種的域名,需動態解悉,(因為我的是拔號寬帶)給別人提供www.ftp服務,別人從我這得到的域名是user.123.com這種的,請問能否實現,如何實現? |
colddawn 回復于:2005-03-05 21:03:11 |
即使摟主帖子本身不足以成為精華,二位討論也足夠把這帖頂為精華了。
順便說說個人看法, apache在多于5000連接以上的應用個人覺得基本就是在拼資源了,apache本身應該還不足以達到極限,但這時cpu,內存各種資源應該開始告急了,再加上網絡連接造成的負載,如果不算動態頁面和數據庫應用,只是靜態頁面的話,突破5000應該很輕松,但是如果使用了動態頁面和數據庫,相信web程序設計的好壞會起到決定性作用。這個時候從apache和系統底層做優化效果應該不會理想了,可能頂層應用修改一個php語句起到的效果會比你絞盡腦汁優化底層好的多。到達這種應用層次估計可以開始考慮升級硬件和作負載均衡了。 對于樓主所說的finwait2的內核參數,不好意思,本人一直沒有找到,希望指點一二。并且對于synflood,看到論壇上不少人說ipconnlimit模塊效果不錯,而本人一直使用iptables限制并發,可以說synflood一來,基本沒什么效果,,想想看底層的包過濾不會比應用層的并發限制還弱吧。至于syncookie對于流量小效果不錯,稍微大一點點就徹底歇菜,可以說確實沒什么用。 另外對于樓主所說的vhost和urlrewrite跑1000虛擬主機的問題,不好意思,本人的服務器也是跑虛擬主機,雖然沒有1000那么恐怖的數量,至少上百個負載尚可的站點也有了,我不覺得使用rewrite效率會更好。 |
zhanglianxiao 回復于:2005-03-07 09:35:10 |
謝謝兩位的爭論,對于我們菜鳥來說幫助很大。希望有更多的人向二位一樣。謝謝,繼續! |
ruochen 回復于:2005-03-07 11:55:45 |
這樣技術上的討論真的很精彩,
但是不要轉化為人生攻擊,把討論的范圍限定在"技術"上, 去過很多的BBS&Forum,上面的這句話很重要. |
peng 回復于:2005-03-07 16:15:31 |
[quote:d952dc9d34="colddawn"]即使摟主帖子本身不足以成為精華,二位討論也足夠把這帖頂為精華了。
順便說說個人看法, apache在多于5000連接以上的應用個人覺得基本就是在拼資源了,apache本身應該還不足以達到極限,但這時cpu,內存各種資源?.........[/quote:d952dc9d34] 連接上5000,其實內存和cpu等已經沒有意義了。 主要是看主板的pci總線的寬度了。。 就像汽車一樣,一個1。8排量的桑塔納,你再給他加大輪寬,加好油,他也不能跑300公里/小時,因為本身決定的。。 軟件的優化,是一定范圍的,同樣硬件的合理配置,也是一定范圍的。 再想提高,就要換機器了。。呵呵 pc server和unix服務器最大的差距就是硬件的構架。 |
dowell3000 回復于:2005-03-18 18:20:18 |
TO zhake
我原先做過類似的東西,如果你對perl熟悉的話,可以修改Net-FTPServer-1.120(http://search.cpan.org/~rwmj/Net-FTPServer-1.120/)的程序 硬盤可以建立 /homepage/account 這樣的,二級域名就是用mod_rewrite來實現 設計一個數據庫,可以包括,用戶賬號,用戶密碼,用戶目錄地址,用戶到期時間,用戶空間大小,用戶當前狀態 所有的的空間的賬號一律使用nobody,修改那個程序,系統登錄以后到數據庫判斷用戶是否賬號密碼都正確,然后 更改用戶的uid為nobody,然后做chroot 到 /homepage/account ,Net-FTPServer這個軟件目前還不支持quota,有兩種方法可以實現,效率上考慮的話可以開個監測的程序使用du 命令回來參數,發現用戶超過實際大小的就更改數據庫的用戶狀態,就不允許用戶上傳文件,如果實時判斷那么可以先調用du命令,保存當前空間大小,然后再chroot,用戶每次上傳文件都要更新當前空間大小的變量 |
miFor 回復于:2005-03-18 23:07:08 |
load average是每秒鐘CPU等待運行的進程個數,一般是cpu*3以上就是比較重的負載了
vmstat 中第一列的值 我不認為大型的網站要通過這種方式來讓服務器在重負載上運行 ,這樣是很危險的,如果down機的話,會丟失多少流量呢。 您說的并發6400個連接是指下面的? [root@xxxxx root]# netstat -na |grep -c :80 8143 此時我的apache進程數為162. [xxxx@xxxx xxx]$ netstat -na | grep -c ":80" 10166 此時apache的進程數為202 沒感覺我的機器負載很高。 |
skylove 回復于:2005-03-19 13:07:18 |
倒...不可能用這么傻的算法吧...
我的數據是用 ps -ef | grep http | grep apache | wc -l 來算的... 所以才納悶樓主一臺機器怎么能做到6k以上的... |
dowell3000 回復于:2005-03-19 15:43:23 |
TO miFor
是apache的進程數,現在服務器一天200W pv 因為是個人網站,所以不大可能有很多臺服務器,最近一直在不停的優化優化,現在最高到5800 |
dowell3000 回復于:2005-03-19 16:04:56 |
貼個網站1tong的統計
時間 總訪問量 唯一IP訪問量 比例 8:00-9:00 48335 4544 2755 4.5% 9:00-10:00 77087 6346 3896 7.2% 10:00-11:00 110086 8168 5152 10.3% 11:00-12:00 120884 9537 6615 11.3% 12:00-13:00 134717 10473 7410 12.6% 13:00-14:00 152914 10840 7261 14.3% 14:00-15:00 156885 10647 6624 14.7% 15:00-16:00 168142 10541 6779 15.7% 服務器高峰的時候是晚上 19:00-20:00 那個時候更高 所有的服務就用了一個服務器,大部分頁面都調用php作為訪問量計數 |
miFor 回復于:2005-03-20 00:17:24 |
我用四臺機器,一天1000W+的流量,Apache也就500多算高的了。
一個httpd不是只能處理一個連接 |
ttvast 回復于:2005-04-08 01:01:18 |
一天200W pv 還是200w hits?
如果是200W hits, 也不過1秒23個連接. 如果你的機器同時跑5000個httpd進程?鬼才相信.光上下文切換,機器就差不多占滿了. 1個HTTPD 的確可以支持很多個連接,但是同一個時刻只有1個連接. 要看CPU平均利用率我是看SAR的,如果看 LOAD AVG 的確是CPU*3以上就不行了,我想不通竟然有人跑50,真是強. 無論是iptable限制并發還是用tcp wait2等時間參數調整,都可能會影響正常的應用.目前只有SYNCOOKIE這種算法可以準確的識別出SYNFLOOD攻擊與正常數據,就是說當你被攻擊的時候,你的系統還可以為真正的用戶提供服務,你們說SYNCOOKIE性能不好怎么也不明白,SYNCOOKIE不消耗任何內核資源,CPU資源僅僅是1個SYN計算一個COOKIE值,現在的服務器怎么也不會1秒種算個幾萬個.你們的推論究竟是怎么來的呢? 在LINUX下.象HTTPD這樣用多進程來處理SOCKET SERVER的,性能是很差的, 高速的服務器設計都是要用EPOLL來做的. 看你的服務器性能很簡單 ab -c 1000 -n 10000 http://localhost/ 看看結果, |