【Mysql】記一次鎖問題
接收到簡訊告警說mysql庫的連結執行緒400了 告警了~
mysql> show status like '%connect%';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| Aborted_connects | 458276 |
| Connections | 719644444 |
| Max_used_connections | 4173 |
| Ssl_client_connects | 0 |
| Ssl_connect_renegotiates | 0 |
| Ssl_finished_connects | 0 |
| Threads_connected | 430 ----檢視一下 已經430了。。。
檢視一下所有的程式情況
[root@bj150 soft]# mysqladmin -uroot -pXXXXXXX processlist>processlist.log
再檢視一下innodb引擎的資訊
[root@bj150 soft]# mysql -uroot -pXXXXXXX -e "show engine innodb status\G" >innodb.log
透過processlist與innodb status的狀態分析,就是update admin 這條語句導致的堵塞,因為admin是myisam引擎的表,所以update是產生了一個x的排它鎖~所以select會被堵塞!!
解決辦法:kill 掉update那條語句即可!!
mysql>kill 719325158;
再檢視fullprocesslist 發現堵塞慢慢好了,連線數也變正常了!
mysql> show status like '%connect%';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| Aborted_connects | 458276 |
| Connections | 719644444 |
| Max_used_connections | 4173 |
| Ssl_client_connects | 0 |
| Ssl_connect_renegotiates | 0 |
| Ssl_finished_connects | 0 |
| Threads_connected | 430 ----檢視一下 已經430了。。。
檢視一下所有的程式情況
[root@bj150 soft]# mysqladmin -uroot -pXXXXXXX processlist>processlist.log
- 檢視一下,發現全是select語句 waiting table level lock。。。產生表鎖了
-
-
-
719325154 | haodaiwang | 192.168.1.148:36248 | hd | waiting table level lock | 0 |
-
| SELECT * from admin where ***Y
-
| 3 | 6 | 6 |
-
| 719325155 | haodaiwang | 192.168.1.149:40395 | hd | waiting table level lock | 0 |
-
| SELECT * from admin where ***Y
-
| 1 | 1 | 1 |
-
| 719325157 | haodaiwang | 192.168.1.147:38542 | hd | waiting table level lock | 0 |
-
| SELECT * from admin where ***Y
-
| 1 | 1 | 1 |
-
| 719325158 | haodaiwang | 192.168.1.148:36281 | hd | Querywaiting table level lock | 0 | Sorting result
- | SELECT * from admin where ***Y
-
| 0 | 0 | 0 |
-
| 719325159 | root | localhost | | Query | 0 |
-
| show processlist
-
| 0 | 0 | 0 |
-
+-----------+------------+----------------------+----+-------------+---------+-----------------------------------------------
-
------------------------+----------------------------------------------------------------------------------------------------
- --+-----------+---------------+-----------+
。。。。。。
。。。。。。
。。。。。。
初步分析可能是update admin這張表導致selec 全部堵塞了!!!
。。。。。。
。。。。。。
-
19325154 | haodaiwang | 192.168.1.148:36248 | hd | waiting table level lock | 0 |
-
| SELECT * from admin where ***Y
-
| 3 | 6 | 6 |
-
| 719325155 | haodaiwang | 192.168.1.149:40395 | hd | waiting table level lock | 0 |
-
| SELECT * from admin where ***Y
-
| 1 | 1 | 1 |
-
| 719325157 | haodaiwang | 192.168.1.147:38542 | hd | waiting table level lock | 0 |
-
| SELECT * from admin where ***Y
-
| 1 | 1 | 1 |
-
| 719325158 | haodaiwang | 192.168.1.148:36281 | hd | Querywaiting table level lock | 0 | Sorting result
- | update xxx set colum=!!!!!! where *****=**** ----一條更新語句!!!!
-
| 0 | 0 | 0 |
-
| 719325159 | root | localhost | | Query | 0 |
-
| show processlist
-
| 0 | 0 | 0 |
-
+-----------+------------+----------------------+----+-------------+---------+-----------------------------------------------
-
------------------------+----------------------------------------------------------------------------------------------------
- --+-----------+---------------+-----------+
初步分析可能是update admin這張表導致selec 全部堵塞了!!!
再檢視一下innodb引擎的資訊
[root@bj150 soft]# mysql -uroot -pXXXXXXX -e "show engine innodb status\G" >innodb.log
點選(此處)摺疊或開啟
-
mysql tables in use 1, locked 0
MySQL thread id 719356646, OS thread handle 0x7f86f8e0e700, query id 14429940008 192.168.1.147 haodaiwang Sorting result
SELECT * FROM `xindai` WHERE ( `zone_id` = 330100 ) AND ( `status` = 4 ) AND ( `type_id` = 1 ) ORDER BY `grade` DESC LIMIT 1
---TRANSACTION 0, not started
MySQL thread id 719356606, OS thread handle 0x7f86f9773700, query id 14429939625 192.168.1.148 haodaiwang Sending data
SELECT ****** from admin。。。。. -
---TRANSACTION 2AF000898, ACTIVE 0 sec ----活動的事物以及事物id
mysql tables in use 1, locked 0
MySQL thread id 719356645, OS thread handle 0x7f86f5263700, query id 14429940006 192.168.1.148 haodaiwang Sending data
SELECT * FROM `xindaiyuan` LEFT JOIN `xindaiyuan_info` ON `xindaiyuan`.id = `xindaiyuan_info`.xdy_id WHERE ( xindaiyuan.bank_
id = '813' ) AND ( xindaiyuan.status = 4 ) ORDER BY xindaiyuan.id DESC LIMIT 0,3
Trx read view will not see trx with id >= 2AF000899, sees < 2AF000899
-
-
MySQL thread id 719356645OS thread handle 0x7f86f5263700, query id 14429940006 192.168.1.148 haodaiwang Sending data
- update admin set.........----最後是一條update語句,生產日誌已經覆蓋,所以都是自己造的,主要是個思路
透過processlist與innodb status的狀態分析,就是update admin 這條語句導致的堵塞,因為admin是myisam引擎的表,所以update是產生了一個x的排它鎖~所以select會被堵塞!!
解決辦法:kill 掉update那條語句即可!!
mysql>kill 719325158;
再檢視fullprocesslist 發現堵塞慢慢好了,連線數也變正常了!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1816360/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記一次 MySQL select for update 死鎖問題MySql
- 記一次線上問題引發的對 Mysql 鎖機制分析MySql
- 記一次線上mysql死鎖MySql
- MySQL死鎖問題MySql
- 記一次 MySQL 資料庫問題排查MySql資料庫
- MySQL 死鎖問題分析MySql
- MySQL鎖問題分析-全域性讀鎖MySql
- MySQL鎖等待與死鎖問題分析MySql
- 記一次神奇的Mysql死鎖排查MySql
- 【京東技術雙十一】記一次線上問題引發的對 Mysql 鎖機制分析MySql
- 一次徹底講清如何處理mysql 的死鎖問題MySql
- 線上問題排查:記一次 Redis Cluster Pipeline 導致的死鎖問題Redis
- 測試MySQL鎖的問題MySql
- 記錄一次spark連線mysql遇到的問題SparkMySql
- 記錄一次 MySQL 死鎖排查過程MySql
- MySQL死鎖系列-線上死鎖問題排查思路MySql
- 記一次mysql熱備份xtrabackup(沒有解決問題)MySql
- 記一次鎖使用不當導致Dubbo執行緒阻塞問題執行緒
- 記一次oom問題排查OOM
- 記錄一次問題排查
- MySQL鎖表相關問題查詢思路MySql
- MySQL中鎖的相關問題DTQUMySql
- mysql insert into ... select的鎖問題MySql
- 一個MySQL死鎖問題的反思MySql
- MySQL 5.7鎖的問題一例MySql
- 一次oracle行級鎖導致的問題Oracle
- 記一次 Redisson 線上問題 → 你怎麼能釋放別人的鎖Redis
- 一次容器MySQL的效能問題排查MySql
- 記一次 Laravel MethodNotAllowedHttpException 問題排查LaravelHTTPException
- 記一次線上FGC問題排查GC
- 記一次HttpClient使用問題分析HTTPclient
- 記錄一次現網MySQL記憶體增長超限問題定位過程MySql記憶體
- 故障解析丨一次死鎖問題的解決
- Mysql使用kill命令解決死鎖問題MySql
- 一個MySQL死鎖問題的復現MySql
- MySQL5.5加主鍵鎖讀問題MySql
- mysql innodb 索引失效問題引起表級鎖MySql索引
- 記一次 Redis 容量 超限的問題Redis