解決linux 系統中Mysql 進程佔用CPU 300%故障

來源:互聯網
上載者:User

標籤:mysql進程cpu負載過高300%

今日接到同事的電話,說公用帳號中的遊戲無法登陸,使用者不能玩了,麻煩儘快解決。

1、登陸IDC機房查看伺服器流量圖,流量正常,排除故障與流量無關。

2、登陸公用帳號中的遊戲所在伺服器發現系統互載過高,mysql進程CPU使用率超過300%。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6F/94/wKiom1WhD27DfMuOAACSmwBjW2A094.jpg" title="QQ圖片20150711204218.png" alt="wKiom1WhD27DfMuOAACSmwBjW2A094.jpg" />

為了快速解決問題直接重啟mysql服務後,再查sysql進程CPU使用率依舊高居不下。故障還沒有解決,繼續尋找原因。

3.登陸mysql資料庫,執行show processlist;查看當前正在執行的sql語句,發現幾個表出現“sending data”狀態,sql執行時間過長。

4、通知開發人員檢查這幾個表有沒有增加索引,開發人員居然無法處理,無語。。。

5、等待開發人員返場的時間裡繼續查詢解決方案。在mysql設定檔my.cnf中增加以下參數:

tmp_table_size = 300M

query_cache_size = 1024M

希望通過增加暫存資料表及查詢快取大小來解決問題,增加這兩個參數後,發現CPU佔用率有所下降,有一定效果,但還是超過100%。遊戲開啟依舊緩慢。

6、本著故障不等人,早點解決問題,使用者就能繼續玩遊戲,使用者也就不會產生投訴的思想。繼續登陸mysql,執行show index from tablename,查詢出現“sending data”的幾個表,發現果然沒有增加索引。此時此該有種想劈人的感覺。

7、執行增加索引的語句,把出現“sending data”的幾個表全部加上索引。

ALTER TABLE table_name ADD INDEX index_name (column_list)

ALTER TABLE table_name ADD UNIQUE (column_list)

ALTER TABLE table_name ADD PRIMARY KEY (column_list)

重啟mysql服務後,mysql進程的CPU佔用率恢複正常,公用帳號中的遊戲可以正常登陸,至此故障得到解決。通知同事去驗證。


此次事件從問題的開始到問題的結束一共耗時2小時,天天跟開發人員說,需要大量查詢的表中一定要加索引、一定要加索引,可是依舊出現因無索引導致發生故障的事件。由此可見規範開發人員的工作習慣、規範開發流程是多麼重要。

藉此記錄一下故障的全過程,也希望能給朋友們一個解決問題思路借鑒。


本文出自 “快樂之魚” 部落格,請務必保留此出處http://01000.blog.51cto.com/2410614/1673296

解決linux 系統中Mysql 進程佔用CPU 300%故障

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.