可以先使用 uptime 命令查看 CPU 平均負(fù)載
臨桂網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
那個(gè) 2 users 表示用戶連接數(shù),指的是總連接數(shù)。
那個(gè) load average 就是系統(tǒng)平均負(fù)載,1 分鐘、5 分鐘、15 分鐘系統(tǒng)負(fù)載的平均值。
指的是一段時(shí)間內(nèi) CPU 正在處理以及等待 CPU 處理的進(jìn)程數(shù)之和的統(tǒng)計(jì)信息,也就是 CPU 使用隊(duì)列的長度的統(tǒng)計(jì)信息。這個(gè)數(shù)字越小越好。
然后再用 vmstat 命令看下 CPU 是否飽和
這里面的 r 就是等待 CPU 的進(jìn)程數(shù),可以用來判定 CPU 是否飽和,當(dāng) r 值高于 CPU 數(shù)時(shí),就意味著飽和了。
系統(tǒng)mysql的進(jìn)程數(shù)
查看 mysql buffer pool hit
ps -ef | grep "mysql" | grep -v "grep" | wc –l
2.Slave_running
mysql show status like 'Slave_running';
如果系統(tǒng)有一個(gè)從復(fù)***務(wù)器,這個(gè)值指明了從服務(wù)器的健康度
3.Threads_connected
mysql show status like 'Threads_connected';
當(dāng)前客戶端已連接的數(shù)量。這個(gè)值會少于預(yù)設(shè)的值,但你也能監(jiān)視到這個(gè)值較大,這可保證客戶端是處在活躍狀態(tài)。
4.Threads_running
mysql show status like 'Threads_running';
如果數(shù)據(jù)庫超負(fù)荷了,你將會得到一個(gè)正在(查詢的語句持續(xù))增長的數(shù)值。這個(gè)值也可以少于預(yù)先設(shè)定的值。這個(gè)值在很短的時(shí)間內(nèi)超過限定值是沒問題的。當(dāng)Threads_running值超過預(yù)設(shè)值時(shí)并且該值在5秒內(nèi)沒有回落時(shí), 要同時(shí)監(jiān)視其他的一些值。
5.Aborted_clients
mysql show status like 'Aborted_clients';
客戶端被異常中斷的數(shù)值,即連接到mysql服務(wù)器的客戶端沒有正常地?cái)嚅_或關(guān)閉。對于一些應(yīng)用程序是沒有影響的,但對于另一些應(yīng)用程序可能你要跟蹤該值,因?yàn)楫惓V袛噙B接可能表明了一些應(yīng)用程序有問題。
6.Questions
mysql show status like 'Questions';
每秒鐘獲得的查詢數(shù)量,也可以是全部查詢的數(shù)量,根據(jù)你輸入不同的命令會得到你想要的不同的值。
7.Handler_*
mysql show status like 'Handler_%';
如果你想監(jiān)視底層(low-level)數(shù)據(jù)庫負(fù)載,這些值是值得去跟蹤的。
如果Handler_read_rnd_next值相對于你認(rèn)為是正常值相差懸殊,可能會告訴你需要優(yōu)化或索引出問題了。Handler_rollback表明事務(wù)被回滾的查詢數(shù)量。你可能想調(diào)查一下原因。
8.Opened_tables
mysql show status like 'Opened_tables';
表緩存沒有命中的數(shù)量。如果該值很大,你可能需要增加table_cache的數(shù)值。典型地,你可能想要這個(gè)值每秒打開的表數(shù)量少于1或2。
9.Select_full_join
mysql show status like 'Select_full_join';
沒有主鍵(key)聯(lián)合(Join)的執(zhí)行。該值可能是零。這是捕獲開發(fā)錯(cuò)誤的好方法,因?yàn)橐恍┻@樣的查詢可能降低系統(tǒng)的性能。
10.Select_scan
mysql show status like 'Select_scan';
執(zhí)行全表搜索查詢的數(shù)量。在某些情況下是沒問題的,但占總查詢數(shù)量該比值應(yīng)該是常量(即Select_scan/總查詢數(shù)量商應(yīng)該是常數(shù))。如果你發(fā)現(xiàn)該值持續(xù)增長,說明需要優(yōu)化,缺乏必要的索引或其他問題。
11.Slow_queries
mysql show status like 'Slow_queries';
超過該值(--long-query-time)的查詢數(shù)量,或沒有使用索引查詢數(shù)量。對于全部查詢會有小的沖突。如果該值增長,表明系統(tǒng)有性能問題。
12.Threads_created
mysql show status like 'Threads_created';
該值應(yīng)該是低的。較高的值可能意味著你需要增加thread_cache的數(shù)值,或你遇到了持續(xù)增加的連接,表明了潛在的問題。
13.客戶端連接進(jìn)程數(shù)
shell mysqladmin processlist
mysql show processlist;
你可以通過使用其他的統(tǒng)計(jì)信息得到已連接線程數(shù)量和正在運(yùn)行線程的數(shù)量,檢查正在運(yùn)行的查詢花了多長時(shí)間是一個(gè)好主意。如果有一些長時(shí)間的查詢,管理員可以被通知。你可能也想了解多少個(gè)查詢是在"Locked"的狀態(tài)—---該值作為正在運(yùn)行的查詢不被計(jì)算在內(nèi)而是作為非活躍的。一個(gè)用戶正在等待一個(gè)數(shù)據(jù)庫響應(yīng)。
14.innodb狀態(tài)
mysql show engine innodb status\G;
該語句產(chǎn)生很多信息,從中你可以得到你感興趣的。首先你要檢查的就是“從最近的XX秒計(jì)算出來的每秒的平均負(fù)載”。
(1)Pending normal aio reads:?該值是innodb io請求查詢的大?。╯ize)。如果該值大到超過了10—20,你可能有一些瓶頸。
(2)reads/s, avg bytes/read, writes/s, fsyncs/s:這些值是io統(tǒng)計(jì)。對于reads/writes大值意味著io子系統(tǒng)正在被裝載。適當(dāng)?shù)闹等Q于你系統(tǒng)的配置。
(3)Buffer pool hit rate:這個(gè)命中率非常依賴于你的應(yīng)用程序。當(dāng)你覺得有問題時(shí)請檢查你的命中率
(4)inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底層操作。你可以用這些值檢查你的負(fù)載情況查看是否是期待的數(shù)值范圍。
通過ps命令查看mysql進(jìn)程即可,執(zhí)行如下命令:
ps -aux|grep mysql
執(zhí)行結(jié)果中看到了mysql進(jìn)程,確定mysql正在運(yùn)行。
mysql 1634 0.0 0.1 13980 1268 ? S Aug11 0:00 [mysqld]
root 6849 0.0 0.0 4816 640 pts/1 S 09:40 0:00 grep mysql
查了一下資料,My SQL可以用下面方法跟蹤sql 語句,以下方法以Windows平臺為例,linux雷同:
1 配置my.ini文件(在安裝目錄,linux下文件名為my.cnf
查找到[mysqld]區(qū)段,增加日志的配置,如下示例:[mysqld]log="C:/temp/mysql.log"
log_slow_queries="C:/temp/mysql_slow.log"
long_query_time=1
log指示日志文件存放目錄;
log_slow_queries指示記錄執(zhí)行時(shí)間長的sql日志目錄;
long_query_time指示多長時(shí)間算是執(zhí)行時(shí)間長,單位s。
Linux下這些配置項(xiàng)應(yīng)該已經(jīng)存在,只是被注釋掉了,可以去掉注釋。但直接添加配置項(xiàng)也OK啦。
2 重新啟動mysql服務(wù)。注意事項(xiàng):A日志存放目錄必須提前存在,否則不能記錄日志。這里也局勢C:/temp目錄必須已經(jīng)存在
B 日志文件是linux格式的文本,建議用ultraEdit打開,轉(zhuǎn)換為dos格式查看(否則沒有換行,看不懂的)
C 服務(wù)在啟動狀態(tài)下不能刪除日志文件,否則就無法記錄sql語句了。
D 不能用ultraEdit直接清除文件內(nèi)容后保存,否則也記錄不下來了。需要重啟服務(wù),如果ultraEdit保存了.bak,后記錄到此文件中。
E 可以用notepad清除文本后保存,可以繼續(xù)記錄日志。(怪怪的,也不建議用)
如何實(shí)時(shí)查看mysql當(dāng)前連接數(shù)?
1、查看當(dāng)前所有連接的詳細(xì)資料:
./mysqladmin -uadmin -p -h10.140.1.1 processlist
2、只查看當(dāng)前連接數(shù)(Threads就是連接數(shù).):
./mysqladmin -uadmin -p -h10.140.1.1 status
、查看當(dāng)前所有連接的詳細(xì)資料:
mysqladmin -uroot -proot processlist
D:\MySQL\binmysqladmin -uroot -proot processlist
+-----+------+----------------+---------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+----------------+---------+---------+------+-------+------------------+
| 591 | root | localhost:3544 | bbs | Sleep | 25 | | |
| 701 | root | localhost:3761 | | uery | 0 | | show processlist |
+-----+------+----------------+---------+---------+------+-------+------------------+
2、只查看當(dāng)前連接數(shù)(Threads就是連接數(shù).):
mysqladmin -uroot -proot status
D:\MySQL\binmysqladmin -uroot -proot status
Uptime: 2102 Threads: 3 Questions: 15531 Slow queries: 0 Opens: 0 Flush tab
les: 1 Open tables: 61 Queries per second avg: 7.389
3、修改mysql最大連接數(shù):
打開my.ini,修改max_connections=100(默認(rèn)為100)。
今天有一臺mysql服務(wù)器突然連接數(shù)暴增,并且等待進(jìn)程全部被鎖...因?yàn)閱栴}解決不當(dāng),導(dǎo)致被罵...OTL
總結(jié):以后要快速定位錯(cuò)誤,布置解決方案
登錄到mysql客戶端后,使用status命令也能獲得thread連接數(shù)以及當(dāng)前連接的id
或者用
show full processlist
看一下所有連接進(jìn)程,注意查看進(jìn)程等待時(shí)間以及所處狀態(tài) 是否locked
如果進(jìn)程過多,就把進(jìn)程打印下來,然后查看
mysql -e 'show full processlist;' 111
查找非locked的進(jìn)程,一般就是當(dāng)前執(zhí)行中卡死,導(dǎo)致后面的進(jìn)程排隊(duì)的原因。
另外,修改mysql最大連接數(shù)的方法:
編輯MySQL(和PHP搭配之最佳組合)配置文件
my.cnf 或者是 my.ini
在[MySQL(和PHP搭配之最佳組合)d]配置段添加:
max_connections = 1000
保存,重啟MySQL(和PHP搭配之最佳組合)服務(wù)。
然后用命令:
MySQL(和PHP搭配之最佳組合)admin -uroot -p variables
輸入root數(shù)據(jù)庫賬號的密碼后可看到
| max_connections | 1000 |
查看MySQL連接數(shù)和當(dāng)前用戶Mysql連接數(shù)
先用管理員身份進(jìn)入mysql提示符。
#mysql -uroot -pxxxx
mysql show processlist; 可以顯示前100條連接信息 show full processlist; 可以顯示全部。隨便說下,如果用普通賬號登錄,就只顯示這用戶的。注意命令后有分號。
如果我們想查看這臺服務(wù)器設(shè)置。 #vi /etc/my.cnf
set-variable=max_user_connections=30 這個(gè)就是單用戶的連接數(shù)
set-variable=max_connections=800 這個(gè)是全局的限制連接數(shù)