本文針對mysql資料庫伺服器逐漸變慢的問題, 進行分析,並提出相應的解決辦法。
一、檢查系統的狀態
通過作業系統的一些工具檢查系統的狀態,比如cpu、記憶體、交換、磁碟的利用率,根據經驗或與系統正常時的狀態相比對,有時系統表面上看起來看空閒,這也可能不是乙個正常的狀態,因為cpu可能正等待io的完成。除此之外,還應觀注那些占用系統資源(cpu、記憶體)的程序。
1.使用sar來檢查作業系統是否存在io問題
#sar -u 2 10 — 即每隔2秒檢察一次,共執行20次。
結果示例:
注:在redhat下,%system就是所謂的%wio。
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的選項,如果開啟請關閉。
mysql伺服器崩潰 mysql資料庫經常崩潰
mysql資料庫經常崩潰 雲伺服器 elastic compute service,簡稱ecs 是阿里雲提供的效能卓越 穩定可靠 彈性擴充套件的iaas infrastructure as a service 級別雲計算服務。雲伺服器ecs免去了您採購it硬體的前期準備,讓您像使用水 電 天然氣等公...
mysql有哪些伺服器庫 資料庫伺服器有哪些
資料庫 資料庫伺服器一般都裝有資料庫,如oracle,mssql,mysql 等,如 oracle的linux伺服器。資料庫,其實就是儲存資料的應用軟體。資料庫伺服器就是在一台高配置的電腦上安裝了提供資料庫服務的軟體 dbms 則這台電腦就稱為資料庫伺服器,資料庫軟體本身支援網路訪問功能。資料庫伺服...
mysql資料庫上傳到伺服器
mysql生成.sql指令碼 在mysql安裝目錄,bin資料夾中 新建乙個記事本,在內新增如下內容 mysqldunp h127.0.0.1 uroot p123 dbname dbname.sql 儲存檔案並重命名,備份mysql為sql指令碼.bat 注意字尾名 雙擊批處理檔案即可生成sql檔...