iT邦幫忙

0

linux centos 記憶體不足 當機 clamav錯誤

匿名 2014-01-08 11:24:4314223 瀏覽

各位好,公司mail server會不定時出現錯誤情況,

系統是centos5.4+sendmail+Mascanner+clamav

上網google應是記億體不足的問題

原本是1g的記憶體加的1.5g好像也沒改善,clamav會因為記憶體不足被系統自動停用

Jan  8 08:58:53 testserver kernel: imap-login invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Jan  8 08:58:54 testserver kernel:  [<c045a485>] out_of_memory+0x72/0x1a5
Jan  8 08:59:13 testserver kernel:  [<c045b9b6>] __alloc_pages+0x216/0x297
Jan  8 08:59:13 testserver kernel:  [<c045ccaf>] __do_page_cache_readahead+0xc4/0x183
Jan  8 08:59:13 testserver kernel:  [<c0459a04>] filemap_nopage+0x157/0x34b
Jan  8 08:59:13 testserver kernel:  [<c0462d3d>] __handle_mm_fault+0x178/0xa15
Jan  8 08:59:13 testserver kernel:  [<c06190b7>] do_page_fault+0x233/0x4e1
Jan  8 08:59:13 testserver kernel:  [<c0618e84>] do_page_fault+0x0/0x4e1
Jan  8 08:59:13 testserver kernel:  [<c0405a89>] error_code+0x39/0x40
Jan  8 08:59:13 testserver kernel:  =======================
看更多先前的討論...收起先前的討論...
有多少swap,用 free 來看看。
那麼大的swap實在很浪費,一般情況下,swap被使用的機會不大。
也看看是否mailscanner有限制附檔的大小來做掃描,
是否因掃描到過大的檔造成?
匿名 檢舉
free -lm的結果

mailscanner 限制10m,
             total       used       free     shared    buffers     cached
Mem:          1510       1474         35          0          1        946
Low:           878        844         34
High:          631        630          1
-/+ buffers/cache:        526        984
Swap:            0          0          0


試試 swapon /dev/sda5
然後 free 看看是否 swap 就起來了!
看是否swap有起來就不會當?
匿名 檢舉
你好執行後有了,但是為什麼只有2g


total used free shared buffers cached
Mem: 1510 1105 405 0 4 603
Low: 878 576 302
High: 631 529 102
-/+ buffers/cache: 497 1013
Swap: 2047 0 2047
CalvinKuo iT邦大師 7 級 ‧ 2014-01-08 14:55:43 檢舉
Mail Server要看看是不是被當垃圾信跳板了...
CPU高峰時,看一下郵件佇列是不是有很多信卡住吧...
匿名 檢舉
relay一直都關了,mailq一直都是0,公司的外寄smtp一直都用msa.hinet.net,這樣做就是防止用戶電腦有問題亂發垃圾信被當黑名單,一律讓中華電信去寄
CalvinKuo iT邦大師 7 級 ‧ 2014-01-08 15:14:11 檢舉

centos


那麻煩你檢查一下HD SMSRT狀況吧...
http://blog.nutsfactory.net/2011/05/30/manage-bad-blocks-on-linux/

匿名 檢舉
硬碟為wd 黑標企業級500g,剛買一個月,再怎麼運氣差也沒這麼快壞吧...Orz
匿名 檢舉
而且錯誤是我剛買這顆硬碟用好後,這種錯誤就一直發生,不是現在才有
CalvinKuo iT邦大師 7 級 ‧ 2014-01-08 15:55:13 檢舉

wd 黑標企業級500g,


新出的 FZEX 版本嗎.... 好像還沒災情傳出
http://www.ptt.cc/bbs/Storage_Zone/M.1385548624.A.7D2.html

匿名 檢舉
匿名 檢舉
剛仔細看一下原來現在企業級變成不是黑標了,是re系列(黃標?)

總之企業級的才剛買,我不覺得是因為壞軌的問題
賽門 iT邦超人 1 級 ‧ 2014-01-08 16:41:24 檢舉
Linux的Swap設置,通常是記憶體大小的兩倍為最佳設定,並不是越大越好,才1.5GB的記憶體,設置到84GB Swap,應該有80GB的空間是沒有在用的。

Linux是講究最佳化的作業系統,當主記憶體不夠時才會把不常用的區塊移到SWAP區域,而SWAP區域的效能並不是那麼好,所以,Linux會儘量使用主記憶體,除非有必要才會動到SWAP。
所以,使用Linux,要求最佳效能,就盡量插記憶體吧!

而Linux在記憶體管理方面,有一層保護機制(Memory Parity),如果遇到記憶體有讀寫不對的區域時,會自動標記起來,防止這塊記憶體區域再被用來存取。
但,Server級的記憶體通常就會有ECC功能,不會由Linux來控制,除非用了沒有ECC功能的記憶體。

我的猜測是,記憶體有狀況發生,導致大塊的區域被標記為不可讀取,以致記憶體看起來是不足夠的樣子。

建議樓主關機把記憶體重插,如果問題仍然發生,把記憶體交換插槽。
如果問題還是發生,換記憶體。
如果換記憶體後還是發生問題,可能主機板在記憶體控制的硬體線路有些問題了。

是已經使用好一陣子的主機嗎?清一下灰塵看看。

如果都試過不能解決問題,建議找主機供應商來處理。
CalvinKuo iT邦大師 7 級 ‧ 2014-01-08 17:37:50 檢舉
我只能猜2G是原來Mail Server切的,84G大概是小HD Mirror到大HD吧..
匿名 檢舉
哈哈.. 是啊,原本的沒這麼大,是ghost過去的,不過為何啟用後只有2g,是有哪邊要再設定嗎
匿名 檢舉
沒記錯的話,其實之前是scsi 36g 硬碟外接scsi卡,因為容量不夠還是怎樣,換成普通的stsa硬碟,愈換愈大,直接整個swap就被拉大了,不過我看舊的server

執行free -lm

swap也沒在用也活的好好,可能真的要多加點記億體試試Orz
James iT邦大師 6 級 ‧ 2014-01-09 08:07:50 檢舉
swap 分區要用 mkswap 作 format 的動作,原本mkswap是2G,沒有重作那就還是2G
James iT邦大師 6 級 ‧ 2014-01-09 08:15:54 檢舉
CentOS開機就有記憶體檢查的選項了,還是先測一下吧!
匿名 檢舉
今天用free -lm 查看後,有用到swap的部份,

是否就是如幾位前輩說的,證明了實體記憶體不足,如夠用根本不會用到swap?

             total       used       free     shared    buffers     cached
Mem:          1510       1468         42          0          1       1051
Low:           878        838         40
High:          631        630          1
-/+ buffers/cache:        414       1095
Swap:         2047        123       1924
匿名 檢舉
今天用free -lm 查看後,有用到swap的部份,

是否就是如幾位前輩說的,證明了實體記憶體不足,如夠用根本不會用到swap?

             total       used       free     shared    buffers     cached
Mem:          1510       1468         42          0          1       1051
Low:           878        838         40
High:          631        630          1
-/+ buffers/cache:        414       1095
Swap:         2047        123       1924
James iT邦大師 6 級 ‧ 2014-01-09 17:31:42 檢舉
我會觀察cached這個值,很大表示多餘的RAM很多,所以系統拿去做CACHE
匿名 檢舉
不太懂,cached很多表示多餘的ram很多?

可是如果很閒的話,為何要去用swap的ram呢?

p.s從昨天開了swap後到現在沒當機了,我會再觀察看看哈哈
CalvinKuo iT邦大師 7 級 ‧ 2014-01-09 17:59:30 檢舉
iT邦幫忙MVPtwtw提到:
swapon

搞不好之前版大
swapoff -a
swapon -a
重置SWAP說不定就解決了...
James iT邦大師 6 級 ‧ 2014-01-10 09:26:54 檢舉
不知道有沒有高手可以調整系統為不需使用SWAP,一般情況下就算RAM很大總有用完的時候,RAM用完回收記憶體時要透過SWAP當緩衝。
匿名 檢舉
其實我的書裡就有說了除非記憶體不足才要swap不然,沒有也行,
James iT邦大師 6 級 ‧ 2014-01-10 10:48:14 檢舉
你可以搜尋 linux disable swap 也有人反應類似的問題,kernel會出現要不到swap的錯誤,有說法是kernel的bug,如果屬實的話可能只有某些kernel版本會這樣。
James iT邦大師 6 級 ‧ 2014-01-10 10:58:29 檢舉
剛剛看了一下kernel config設定裡面確實有關於SWAP的設定,所以要完全停用SWAP一定要透過重編kernl或者調整系統參數(不確定可以)。這個問題已經解決了,我不會再follow了喔!
匿名 檢舉
我的版本是完全一樣,因為是ghost的系統=_=

所以沒道理一個會要swap ,一個不要swap

但是舊的swap沒開也不會當,我想可能是ram有2g

這台一開始只有1g,後來加到1.5

從開了swap到今天為止是都沒有當機,不過我還是想至少觀察到下星期看看,至少有多幾天的觀察期

如果可以我會第一時間回報,若b大有空的話還是請你再來看一下臉紅
匿名 檢舉

不太懂,cached很多表示多餘的ram很多?

可是如果很閒的話,為何要去用swap的ram呢?



這個問題可以請b大回答一下嗎,感謝

一定要b大才能回答喔. 暈
匿名 檢舉
h大也能回答愛你
ayu iT邦好手 2 級 ‧ 2014-01-11 04:22:27 檢舉
好奇問一下----有換過主機板嗎?
我不確定是應用程式設定的關係?
還是作業系統的安排,才會把哪些程式用swap?
我的linux幾乎都沒用到swap。
就算商用軟體說有多大的swap需求,
好像有用一些的swap,但量也很小;也搞不清楚是哪些程式在用swap。
參考這兩篇文章裡的script,好像可以看出哪些程序用swap:
how to find out which processes are swapping in linux?
Find out what is using your swap
文中的script要留意 " ' 這些符號,有些變成了全型,要自己換成半型。
我有些swap有數字,但執行script查,
卻又算出swap用了0 Kb…怪怪。
James iT邦大師 6 級 ‧ 2014-01-13 10:11:28 檢舉
先跟台灣大抱歉,又要借用你的討論了。

不太懂,cached很多表示多餘的ram很多?


我是一般使用者,而且很多細節的東西我都不求甚解,只能分享我的經驗,我有一台SERVER RAM 有 16777216 系統硬是用了 16193540 的 RAM當CACHE,SWAP值還是用了68。

匿名 檢舉
自從加了swap 之後,都沒error 了,看起來應該是記憶體不足的原因沒錯..

感謝你提供相關資料,但現在反正只要能用就好了啦~太詳細的東西看了也看不懂,就算會了看完也忘了

好讀書不求甚解~XD
匿名 檢舉
所以意思是linux應該是有多少ram就用多少吃光光來當cache吧,

但是如你說的如代表很閒的話,那幹麼還是一定要用swap 呢?
OS會留預備隊.具體部份,在此先不討論.
關於Swap資訊的獲取,可以參考一下敝人今天的Linux連載.
http://ithelp.ithome.com.tw/question/10144751?tag=hp.all
匿名 檢舉
感謝分享,但如我說的,不求甚解,只要不會當,能正常使用就好了,如果系統想用swap就給他用XD
匿名 檢舉
但想請問hitomitanaka,不管多少記憶體,linux都會吃光光當cache是正常的是嗎?
匿名 檢舉
OS有很多種,版本也都一直在變,加上參數調整.
所以這沒有一定的答案.
一般來說,每個Process能吃的資源,會有一定程度的上限.
系統要保留一點資源給新進來的.為何要這樣作呢?
例如某個Job跑下去,吃掉95%的資源,而系統管理者,
此時可以登入,因為有保留一定的資源,所以可以操作,
進而將此Job作限制,或是降低優先級.
但若把資源都咬住了,此時就很麻煩.例如一般人愛用某個OS.

OS一般會趨向通用狀況的設定.若要調成讓某些Process吃比較多
資源,也是可以的.
ayu iT邦好手 2 級 ‧ 2014-01-13 21:48:13 檢舉
那就對了,
其實我一開始就懷疑是 CentOS 5.4 與主機板溝通不良,
實際可用記憶區塊遠低於預期.
DVR/set-top box/Media box/NAS/Router..等採用輕巧型的Linux,
是直接在記憶體上運行的, 沒有swap, 一樣可以長期運作.
CentOS 5.4 是2009年10月釋出的,
未必能夠很好地支援最近四年的主機板/晶片組,
事實上還真有人在新MB上安裝CentOS 5.4 連硬碟都抓不到的.

能改用最新版CentOS (6.5 / 5.10)對新MB支援上一定較好, 不然就試著調整BIOS,
再不然用舊一點的板子.
swap重新切割+format, 或者取消改用swapfile方式, 都可以, 不用那麼大.
匿名 檢舉
我的主機也是至少五年前的 P5P800-VM 賽陽3.0g,還是單核心.......
應該不是這個問題,不過記憶體不足看起來是真的,用了swap到現在都沒當機過,要找機會加記億體

不用用了swap感覺有變慢了,sshd登入都會頓一下
匿名 檢舉
至於您提供的意見,swap 重切就不用了,反正現在有swap二g能用,不會當就好了

容量也夠,手賤又去做swap重切,出了什麼意外主機變成不能用更麻煩搖頭
ayu iT邦好手 2 級 ‧ 2014-01-14 19:00:35 檢舉
P5P800-VM是十年前的Asus板子, 所以我的懷疑不成立了, 祝好運.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

8
mwu4
iT邦新手 2 級 ‧ 2014-01-08 11:58:28
最佳解答

建議可執行指令「 top 」,查看記憶體的使用狀況;另在「 /var/log/maillog 」內是否有相關的錯誤訊息?謝謝。

看更多先前的回應...收起先前的回應...
匿名 檢舉

這個我會, 但是是不定時的,而且常常cpu,ram在跑90幾%也沒當機,不曉得為什麼,

有時候就會當

匿名 檢舉

而且系統若是負戴應該是早上一上班負戴最多,但是也不一定會,之前六日放假回來,星期一信最多,一樣沒當

匿名 檢舉

maillog同時間沒有錯誤訊息

mwu4 iT邦新手 2 級 ‧ 2014-01-08 16:27:47 檢舉

一個題外疑問:如果版主的系統時常cpu、ram使用率高達90%以上,那麼當執行clamav需要資源時,豈不是容易出問題?不知版主系統執行指令「 uptime 」的「 load average 」為多少?其數值應該不超過2為宜。謝謝。

匿名 檢舉

17:08:19 up 16 days, 6:57, 2 users, load average: 0.10, 0.30, 0.42
請問這樣正常嗎

mwu4 iT邦新手 2 級 ‧ 2014-01-08 20:52:56 檢舉

平均負載( 0.10, 0.30, 0.42 )看起來正常。

mwu4 iT邦新手 2 級 ‧ 2014-01-08 21:16:33 檢舉

個人並不了解為何版主的swap要設84G;參考網頁文章「 https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s2-diskpartrecommend-x86.html 」,應該2倍版主系統的實體記憶體就足夠。謝謝。

匿名 檢舉

是因為原本小hd 直接ghost就變大了瞎

匿名 檢舉

今天用free -lm 查看後,有用到swap的部份,

是否就是如幾位前輩說的,證明了實體記憶體不足,如夠用根本不會用到swap?

<pre class="c" name="code">             total       used       free     shared    buffers     cached
Mem:          1510       1468         42          0          1       1051
Low:           878        838         40
High:          631        630          1
-/+ buffers/cache:        414       1095
Swap:         2047        123       1924
mwu4 iT邦新手 2 級 ‧ 2014-01-09 18:45:20 檢舉

的確,參考鳥哥的說明「 http://linux.vbird.org/linux_basic/0230filesystem.php 」,「swap 的功能就是在應付實體記憶體不足的情況下所造成的記憶體延伸記錄的功能」。不過對伺服器而言,使用到swap應該是正常的。故針對版主的問題,個人有兩個想法提供參考:

  1. 能夠的話,重新安裝系統;因從您提供的「fdisk」和「free -lm」所顯示的swap大小不一致。
  2. 完整確認您現在使用的系統內有哪些服務在執行,是否與先前的系統一樣?另檢查日誌檔「 /var/log/messages 」、「 /var/log/maillog 」、...等,是否有異常紀錄。logwatch是一個幫忙整理日誌檔給管理員的好用服務。
    Debug需要耐心、時間和經驗,或許其他大大可提供更好的意見參考。謝謝。

我要發表回答

立即登入回答