這學期上課使用 moodle 時,一個班的學生同時使用線上測驗時,就會發生大部份同學遇到 MySQL OverLoad 的問題,進主機用 top 觀察一下,記憶體用量沒問題,但是 mysqld 卻使用了 99.9% 的 CPU 。
檢查了一下 moodle 的 db 使用量,發覺有一個資料表 mdl_cache_text 就用掉了 400MB 以上。這個表應該是前端網頁文字的快取用途,看了一下內容,裡面的條目重複情形還蠻多的。
既然是 cache ,那代表即使刪掉了,也會自己重建吧?!另外,猜測每次執行時,可能會大量 qurey 這個表,所以大膽猜一下,這個表可能是造成系統瓶頸的原因。所以,動手將這個表的內容清掉了。重新進入 moodle 後,感覺反應確實有變快了。
再來就是等星期三上課時的實測效果,看看是不是真的能有效的解決問題了。
[update 2007-09-26]
今天上課時,完全沒有再發生 MySQL OverLoad 問題了,所有學生 ( 44 人 ) 都很順利在同一段時間裡進入隨堂測驗。看來之前的猜測沒錯。有空再來看看 moodle 這個 text_cache 機制到底是怎麼回事?!
沒有留言:
張貼留言