最近公司的mysql服務器經常出現阻塞狀態。動不動就重啟,給用戶訪問帶來了相當的不便。
首先說明一點,每天的訪問量并不大每天才2W的訪問量,按道理說,訪問量再增加一倍這樣的服務器也應該足以承受。可是我們的服務器為什么總是這樣頻頻重啟呢?經過mysqlreport顯示mysql運行的狀態如下:
<PRE><PRE><PRE><PRE><PRE><PRE><PRE><PRE><PRE><PRE><PRE><PRE><PRE><FONT color=#006bad>MySQL 5.1.28-rc-log uptime 0 0:4:48 Thu Apr 30 14:04:58 2009<br><br>__ Key _________________________________________________________________<BR>Buffer used 7.74M of 384.00M %Used: 2.02<BR> Current 52.89M %Usage: 13.77<BR>Write hit 0.00%<BR>Read hit 91.97%<br><br>__ Questions ___________________________________________________________<BR>Total 14.46k 50.2/s<BR> DMS 9.24k 32.1/s %Total: 63.90<BR> QC Hits 3.66k 12.7/s 25.33<BR> Com_ 1.04k 3.6/s 7.19<BR> COM_QUIT 517 1.8/s 3.58<BR> -Unknown 1 0.0/s 0.01<BR>Slow 1 s 4 0.0/s 0.03 %DMS: 0.04 Log: OFF<BR>DMS 9.24k 32.1/s 63.90<BR> SELECT 9.21k 32.0/s 63.75 99.75<BR> UPDATE 23 0.1/s 0.16 0.25<BR> REPLACE 0 0/s 0.00 0.00<BR> DELETE 0 0/s 0.00 0.00<BR> INSERT 0 0/s 0.00 0.00<BR>Com_ 1.04k 50/s 44.4<BR> set_option 523 1.8/s 3.62<BR> change_db 510 50/s 44.4<BR> show_proces 5 0.0/s 0.03<br><br>__ SELECT and Sort _____________________________________________________<BR>Scan 49 0.2/s %SELECT: 0.53<BR>Range 16 0.1/s 0.17<BR>Full join 2 0.0/s 0.02<BR>Range check 0 0/s 0.00<BR>Full rng join 0 0/s 0.00<BR>Sort scan 55 0.2/s<BR>Sort range 475 1.6/s<BR>Sort mrg pass 0 0/s<br><br>__ Query Cache _________________________________________________________<BR>Memory usage 12.02M of 150.00M %Used: 8.01<BR>Block Fragmnt 0.01%<BR>Hits 3.66k 12.7/s<BR>Inserts 9.14k 31.8/s<BR>Insrt:Prune 9.14k:1 31.8/s<BR>Hit:Insert 0.40:1<br><br>__ Table Locks _________________________________________________________<BR>Waited 0 0/s %Total: 0.00<BR>Immediate 10.49k 36.4/s<br><br>__ Tables ______________________________________________________________<BR>Open 58 of 512 %Cache: 11.33<BR>Opened 64 0.2/s<br><br>__ Connections _________________________________________________________<BR>Max used 4 of 2000 %Max: 0.20<BR>Total 519 1.8/s<br><br>__ Created Temp ________________________________________________________<BR>Disk table 1 0.0/s<BR>Table 184 0.6/s Size: 256.0M<BR>File 5 0.0/s<br><br>__ Threads _____________________________________________________________<BR>Running 2 of 2<BR>Cached 2 of 150 %Hit: 99.23<BR>Created 4 0.0/s<BR>Slow 0 0/s<br><br>__ Aborted _____________________________________________________________<BR>Clients 0 0/s<BR>Connects 0 0/s<br><br>__ Bytes _______________________________________________________________<BR>Sent 20.36M 70.7k/s<BR>Received 1.37M 4.7k/s<br><br>__ InnoDB Buffer Pool __________________________________________________<BR>Usage 304.00k of 8.00M %Used: 3.71<BR>Read hit 84.42%<BR>Pages<BR> Free 493 %Total: 96.29<BR> Data 19 3.71 %Drty: 0.00<BR> Misc 0 0.00<BR> Latched 0.00<BR>Reads 77 0.3/s<BR> From file 12 0.0/s 15.58<BR> Ahead Rnd 1 0.0/s<BR> Ahead Sql 0 0/s<BR>Writes 0 0/s<BR>Flushes 0 0/s<BR>Wait Free 0 0/s<br><br>__ InnoDB Lock _________________________________________________________<BR>Waits 0 0/s<BR>Current 0<BR>Time acquiring<BR> Total 0 ms<BR> Average 0 ms<BR> Max 0 ms<br><br>__ InnoDB Data, Pages, Rows ____________________________________________<BR>Data<BR> Reads 25 0.1/s<BR> Writes 3 0.0/s<BR> fsync 3 0.0/s<BR> Pending<BR> Reads 0<BR> Writes 0<BR> fsync 0<br><br>Pages<BR> Created 0 0/s<BR> Read 19 0.1/s<BR> Written 0 0/s<br><br>Rows<BR> Deleted 0 0/s<BR> Inserted 0 0/s<BR> Read 0 0/s<BR> Updated 0 0/s<BR>大家可以看到在Com_中占的比例是相當大的,而一般情況下,這個值應該是3.0%左右。如果這個值過高的話,就說明,你的mysql處理請求中<BR>做了一些無謂的工作,占用了大量的系統資源。其中我們看到尤為change_db的占用率比較高。這個值高了,說明我們執行的user database;命令相當多。<BR>檢查程序,原來我們在執行查詢語句的時候應用了mysql_query_db("database","sql");這個語句在每次執行的時候都會自動調用use database;<BR>所以我們應該將mysql_db_query 更改成mysql_query();再觀察mysql的運行狀態,ok。一切正常了。</FONT>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END