您在這裡

主機被停權

lunderlini's 的頭像
lunderlini 在 2011-01-22 (週六) 16:47 發表

昨天因為最近cron的執行異常於是就嘗試使用SuperCron
用的是6.x-2.x-dev
結果整個網站的反應就變慢了
不過Search Index的進度有改變,cron有確實執行
昨晚在一次設定調整後
整個站就完全沒反應
早上起來就接到通知被停權了
詢問了一下,竟說我的網站RAM的耗用高達該機的50%
而該機的記憶體是8G耶
這到底是怎麼回事?
實在很納悶,好像也沒聽說drupal記憶體用量會這麼高
之前聽到的128RAM就很夠用了
而且站內內容也才幾百篇
怎麼會這樣勒~

很多人都犯了一些錯誤,不知你有沒有

設定 PHP memory_limit 很大 + PHP 執行時間很長

需要留意,memory_limit 並不是主機的 RAM 限制,這純是 PHP 單一線程的限制

假如你的程式使用了 32MB,10 個人同時讀取 (注意是同時並發)

32MB * 10 = 320 MB (這是*一刻*時間所用到的記憶體)

說實話 10 個人並發,不是那麼簡單的,不是很多網站有這種流量, LOL (當然這裏沒計算很多因素 APACHE ..etc)

問題是,有一些 PHP 程式鎖死了,運作不良

一個運行 10s 或更長時,你又不停執行的話...

32MB * 10 * 10 .....

就變得很大....(記憶體永遠不釋放)

而 Drupal Cron 並不是,我在瀏覽器把它關了,就會停止下來,而是一直運行直至結束
所以你的情況可能是建立 Search Index 過密,SERVER 反應不過來,重重復復地運個不停

---
notaBlueScreen

所以memory_limit應該要怎麼設?
常出現記憶體耗盡的訊息時,不是只能把memory_limit加上去才能跑嗎?
所以當某個程式沒跑完又繼續下指令時就會出現這種問題?
cron執行的太密集是不是有可能導致記憶體耗用太多?
還有若是用虛擬主機,有辦法終止某程式的運行嗎?

突然間,我想起錯的人是我,哈哈
設定很大,並不會一定每次用光光的,這點我要說清楚一點 (最重要是不要無限設大,而想方法解決,不易的說)
但也不能永遠設定很大,因為有很多未知的 BUG 存在,遇上就很慘

---
notaBlueScreen

該機的記憶體是8G
有些主機商好像會同一台主機中可能還有放其它的網站

並非有錢就是快樂,問心無愧心最安。 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)