第 1 頁 (共 1 頁)
mysqld使用cpu比率飆高
發表於 : 2008-01-26 00:35
由 krab
我的論壇經常上線人數大約只有在20~50個人之間,通常httpd跟mysqld的CPU使用率都在個位數以下
但是一星期總有2~3次,論壇突然很慢幾近停頓的程度
我進shell觀看top
當時論壇上線人數不多,也看不出有特別的地方
最後都是把mysqld終止重開之後才恢復正常
請教各位大大,該從那邊著手?
Re: mysqld使用cpu比率飆高
發表於 : 2008-01-26 13:36
由 一平
Re: mysqld使用cpu比率飆高
發表於 : 2008-01-26 22:25
由 krab
感謝一平大大
我去研究研究再來請教您
感恩
Re: mysqld使用cpu比率飆高
發表於 : 2008-01-28 01:38
由 michaelchain
这个情况很可能是由搜尋引起, 最好在程式上做一些修改, 一是增大分詞的尺寸增加準確性, 二是限制級聯的條件而防止資料庫過載.
Re: mysqld使用cpu比率飆高
發表於 : 2008-01-28 12:51
由 warkinger
可能是由搜索引擎robot引起,有的沒依robots.txt規範的...將版區限制必須註冊後,才能觀看,也就是訪客不得進入版區,這樣可改善一下。
Re: mysqld使用cpu比率飆高
發表於 : 2008-01-28 17:37
由 krab
warkinger 寫:可能是由搜索引擎robot引起,有的沒依robots.txt規範的...將版區限制必須註冊後,才能觀看,也就是訪客不得進入版區,這樣可改善一下。
謝謝warkinger大大的指引,我去檢查一下robots.txt
Re: mysqld使用cpu比率飆高
發表於 : 2008-01-28 17:41
由 krab
michaelchain 寫:这个情况很可能是由搜尋引起, 最好在程式上做一些修改, 一是增大分詞的尺寸增加準確性, 二是限制級聯的條件而防止資料庫過載.
我讀了michaelchain大大的這一篇大作
http://phpbb-tw.net/phpbb/posting.php?m ... 6&p=259302
請問所謂的程式上的修改是指哪裡呢?懇請指引方向,謝謝您!
Re: mysqld使用cpu比率飆高
發表於 : 2008-01-28 20:31
由 warkinger
krab 寫:warkinger 寫:可能是由搜索引擎robot引起,有的沒依robots.txt規範的...將版區限制必須註冊後,才能觀看,也就是訪客不得進入版區,這樣可改善一下。
謝謝warkinger大大的指引,我去檢查一下robots.txt
沒依robots.txt規範,不是你的問題...是指對岸大陸的搜索引擎沒依robots.txt規範...如百度...等很多。
所以你去檢查robots.txt也沒用的。
直接限制非訪客,不得進入版區就好了。
說實在搜索引擎真的有時很要命,不停的刷阿刷的。
---------------
所謂的程式上的修改...天方夜談...這是寫給程式開發的人看的...於事無補
關於mysql吃CPU資源...這個好像用GOOGLE搜一下就有了,大陸那邊有人說是沒建立索引標籤,
你找看看主題及內容的資料表,有沒有建立索引標籤,我懶的找了,如果沒有,你就建一下看看。
至於那文章,你可用gooogle查查,很久之前看過,還有改什麼php.ini還是mysql的設定,加大快取什麼的,它教了三四招暫時解決方案。
--------
說實在啦,這是國外的程式,它們用英文測,當然問題少,因為26英文字是在字碼的最前面,不管你是用utf-8或big5...等,ASCII碼是在最前面,用搜索比較一定比其它非英系的快N倍,也少出問題。
一個中文字UTF-8要用3字元,BIG5用2字元,光搜索就吃重很多了,這問題我大約知道,但不知如何說明。
Re: mysqld使用cpu比率飆高
發表於 : 2008-04-06 06:04
由 wasabi
不曉得這位大大解決問題了沒? 如果還沒, 不妨到phpMyAdmin首頁裡面的"處理" (Processes)看看是否有一堆Sleep的指令。
有的話, 可考慮將php.ini中將mysql.allow_persistent設定給關閉, 這樣mysql就不會在那邊裝死了.
Re: mysqld使用cpu比率飆高
發表於 : 2008-04-08 00:45
由 krab
wasabi 寫:不曉得這位大大解決問題了沒? 如果還沒, 不妨到phpMyAdmin首頁裡面的"處理" (Processes)看看是否有一堆Sleep的指令。
有的話, 可考慮將php.ini中將mysql.allow_persistent設定給關閉, 這樣mysql就不會在那邊裝死了.
謝謝wasabi大大,我去試試看。
目前在後台設定超過某個閾值,就暫停搜索的功能因應。
Re: mysqld使用cpu比率飆高
發表於 : 2008-04-08 15:06
由 krab
報告:空空如也,沒有假死的程序。
Re: mysqld使用cpu比率飆高
發表於 : 2008-04-11 10:39
由 wasabi
也許是mysql版本的差異? php是cgi還是apache extension?
話說剛剛竹貓好像也中獎了呢... 秀出傳說中的phpBB 3的Too many connections問題
(phpbb.com官網有十幾頁關於這個的討論... orz)
Re: mysqld使用cpu比率飆高
發表於 : 2008-04-17 00:25
由 krab
wasabi 寫:也許是mysql版本的差異? php是cgi還是apache extension?
話說剛剛竹貓好像也中獎了呢... 秀出傳說中的phpBB 3的Too many connections問題
(phpbb.com官網有十幾頁關於這個的討論... orz)
呵,不懂這部分
是LAMP --with-apxs,這樣算是apache extension嗎?
Re: mysqld使用cpu比率飆高
發表於 : 2008-05-27 22:39
由 wasabi
最近升級到獨立式主機,本來想說用apache模組就不會出事,結果主機穩定的跑了半個月以後也跑出了too many connections錯誤。
初步判定是這些Sleep指令在搞鬼,但問題是php.ini裡面mysql.allow_persistent已經off了,怎麼還會出事? 好吧... 不管了,只好在my.cnf裡面加入interactive-timeout=300強迫在300秒後關閉這些連線。
目前看起來Sleep指令少多了,超過300秒後便會自動被幹掉,遇到類似問題的大大可以試試看。
ps. 判斷是不是cgi的方式很簡單,看看apache的設定,如果有LoadModule php5_module modules/libphp5.so一類的就是apache模組,如果有Action application/x-httpd-php "/php/php-cgi"一類的就是cgi。
pps. mysqld塞太多連線數時可能會出現的症狀跟此主題敘述得很像,mysqld會佔掉一堆記憶體,佔用一堆cpu%,甚至有可能造成資料表損壞(而且還無法修復!),有此現象的要特別留意喔。