本文針對MySQL數據庫服務器逐漸變慢的問題, 進行分析,並提出相應的解決辦法。mysql
1、檢查系統的狀態sql
經過操做系統的一些工具檢查系統的狀態,好比CPU、內存、交換、磁盤的利用率,根據經驗或與系統正常時的狀態相比對,有時系統表面上看起來看空閒,這也可能不是一個正常的狀態,由於cpu可能正等待IO的完成。除此以外,還應觀注那些佔用系統資源(cpu、內存)的進程。數據庫
1.使用sar來檢查操做系統是否存在IO問題服務器
#sar -u 2 10 — 即每隔2秒檢察一次,共執行20次。
結果示例:網絡
注:在redhat下,%system就是所謂的%wio。ide
Linux 2.4.21-20.ELsmp (YY075) 05/19/2005
10:36:07 AM CPU %user %nice %system %idle
10:36:09 AM all 0.00 0.00 0.13 99.87
10:36:11 AM all 0.00 0.00 0.00 100.00
10:36:13 AM all 0.25 0.00 0.25 99.49
10:36:15 AM all 0.13 0.00 0.13 99.75
10:36:17 AM all 0.00 0.00 0.00 100.00
其中:工具
%usr指的是用戶進程使用的cpu資源的百分比;性能
%sys指的是系統資源使用cpu資源的百分比;操作系統
%wio指的是等待io完成的百分比,這是值得觀注的一項;進程
%idle即空閒的百分比。
若是wio列的值很大,如在35%以上,說明系統的IO存在瓶頸,CPU花費了很大的時間去等待I/O的完成。Idle很小說明系統CPU很忙。像以上的示例,能夠看到wio平均值爲11,說明I/O沒什麼特別的問題,而idle值爲零,說明cpu已經滿負荷運行了。
2.使用vmstat監控內存 cpu資源
[root@mysql1 ~]# vmstat
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 72 25428 54712 672264 0 0 14 43 53 59 1 1 98 0 0
vmstat 的輸出那些信息值得關注?
io bo: 磁盤寫的數據量稍大,若是是大文件的寫,10M之內基本不用擔憂,若是是小文件寫2M之內基本正常
① CPU問題
下面幾列須要被察看,以肯定cpu是否有問題
Processes in the run queue (procs r)
User time (cpu us)
System time (cpu sy)
Idle time (cpu id)
問題狀況:
若是processes in run queue (procs r)的數量遠大於系統中cpu的數量,將會使系統便慢。
若是這個數量是cpu的4倍的話,說明系統正面臨cpu能力短缺,這將使系統運行速度大幅度下降
若是cpu的idle時間常常爲0的話,或者系統佔用時間(cpu sy)是用戶佔用時間(cpu us)兩輩的話,系統面臨缺乏cpu資源
解決方案 :
解決這些狀況,涉及到調整應用程序,使其能更有效的使用cpu,同時增長cpu的能力或數量
②內存問題
主要查看頁導入的數值(swap中的si),若是該值比較大就要考慮內存,大概方法以下:
最簡單的,加大RAM
減小RAM的需求
3.磁盤IO問題
處理方式:作raid10提升性能
4.網絡問題
telnet一下MySQL對外開放的端口,若是不通的話,看看防火牆是否正確設置了。另外,看看MySQL是否是開啓了skip-networking的選項,若是開啓請關閉。