利用pt-deadlock-logger监控死锁
Percona提供的percona-toolkit提供很多实用功能,这里着重介绍如何监控死锁.
pt-deadlock-logger基本用法
Usage: pt-deadlock-logger [OPTIONS] DSN
解释:指定DSN死锁信息,它可以标准输出到屏幕也可以记入到表中或者日志文件,OPTIONS就是要加的参数了.
在这里做个模拟产生死锁的试验,例子如下:
session1:
mysql> create table lock1 (id int,name char(20),address varchar(50));
Query OK, 0 rows affected (0.15 sec)
mysql> create table lock2 (id int,name char(20),address varchar(50));
Query OK, 0 rows affected (0.15 sec)
mysql> insert into lock1 values (1,'aa','beijing');
Query OK, 1 row affected (0.00 sec)
mysql> insert into lock1 values (2,'bb','shanghai');
Query OK, 1 row affected (0.02 sec)
mysql> insert into lock1 values (3,'cc','shenzhen');
Query OK, 1 row affected (0.01 sec)
mysql> insert into lock2 values (1,'dd','beijing');
Query OK, 1 row affected (0.01 sec)
mysql> insert into lock2 values (2,'ee','tianjin');
Query OK, 1 row affected (0.01 sec)
mysql> insert into lock2 values (3,'ff','henan');
Query OK, 1 row affected (0.01 sec)
mysql> select * from lock1;
+------+------+----------+
| id | name | address |
+------+------+----------+
| 1 | aa | beijing |
| 2 | bb | shanghai |
| 3 | cc | shenzhen |
+------+------+----------+
3 rows in set (0.01 sec)
mysql> select * from lock2;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 1 | dd | beijing |
| 2 | ee | tianjin |
| 3 | ff | henan |
+------+------+---------+
3 rows in set (0.00 sec)
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from lock1 where id=1 for update;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 1 | aa | beijing |
+------+------+---------+
1 row in set (0.00 sec)
session2
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from lock2 where id=1 for update;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 1 | dd | beijing |
+------+------+---------+
1 row in set (0.00 sec)
session1
mysql> select * from lock2 where id=1 for update; ---锁等待
session2
mysql> select * from lock1 where id=1 for update;
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
OK,已经产生死锁了.现在用pt-deadlock-logger分析一下
[root@localhost ~]# pt-deadlock-logger --run-time=10 --interval=3 --create-dest-table --dest D=test,t=deadlocks u=root,p=xxxxx
server ts thread txn_id txn_time user hostname ip db tbl idx lock_type lock_mode wait_hold victim query
localhost.localdomain 2014-01-23T16:04:02 22 0 100 root localhost test
lock2 GEN_CLUST_INDEX RECORD X w 0 select * from lock2 where id=1 for
update
localhost.localdomain 2014-01-23T16:04:02 23 0 54 root localhost test
lock1 GEN_CLUST_INDEX RECORD X w 1 select * from lock1 where id=1 for
update
参数解释如下:
--create-dest-table : 创建指定信息的表.
--dest : 创建存储死锁信息的表.
--database : -D,指定数据库.
--table : -t,指定表名.
--log : 指定死锁日志信息写入到文件.
--run-time : 运行次数,默认永久.
--interval : 运行间隔时间,默认30s.
--u,p, : 链接数据库的信息.
继续看deadlock表里是否存储信息
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| deadlocks |
| lock1 |
| lock2 |
+----------------+
3 rows in set (0.00 sec)
mysql> select * from deadlocks\G
*************************** 1. row ***************************
server: localhost.localdomai
ts: 2014-01-23 16:04:02
thread: 22
txn_id: 0
txn_time: 100
user: root
hostname: localhost
ip:
db: test
tbl: lock2
idx: GEN_CLUST_INDEX
lock_type: RECORD
lock_mode: X
wait_hold: w
victim: 0
query: select * from lock2 where id=1 for update
*************************** 2. row ***************************
server: localhost.localdomai
ts: 2014-01-23 16:04:02
thread: 23
txn_id: 0
txn_time: 54
user: root
hostname: localhost
ip:
db: test
tbl: lock1
idx: GEN_CLUST_INDEX
lock_type: RECORD
lock_mode: X
wait_hold: w
victim: 1
query: select * from lock1 where id=1 for update
2 rows in set (0.00 sec)
mysql>
测试表明死锁信息已经写入到了表中,记录的是2条导致死锁的SQL还有包括库、用户等等很详细的信息.对于我们可以利用pt-deadlock-logger,查看到底哪些SQL引起死锁方便定位.
利用pt-deadlock-logger监控死锁的更多相关文章
- 16 利用Zabbix完成windows监控
点击返回:自学Zabbix之路 16 利用Zabbix完成windows监控 1.安装zabbix_agentd 1.1.下载zabbix_agentd监控客户端软件安装包(windows操作系统客户 ...
- 17 利用Zabbix完成VMare监控
点击返回:自学Zabbix之路 17 利用Zabbix完成VMare监控 最近在研究通过Zabbix监控VMware vSphere,Zabbix Documentation 3.0 从文档中我们看到 ...
- SQL Server扩展事件-- 使用system_health默认跟踪会话监控死锁
SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁 转自:http://blog.51cto.com/ultrasql/160037 ...
- 利用FileSystemWatcher实现磁盘文件监控
马上放假了,好开森啊O(∩_∩)O哈哈~ ——————————————————————————————————————————————————————— 昨天逛园子,发现了一个FileSystemWa ...
- Linux下利用nc命令来监控检测服务器的端口使用情况(转载)
最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉 ...
- 利用Windows性能计数器(PerformanceCounter)监控
一.概述 性能监视,是Windows NT提供的一种系统功能.Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器.性能对象,就 ...
- 利用wget 和 curl 监控网站是否正常
监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大,参数也非常多,下面列举几个常用的参数. wget 常用命令参数:--spider ...
- zabbix利用自带模板-监控mysql性能
环境: zabbix3.4.4 mariadb 5.5.56 要求: 利用zabbix 自带的模板 监控mariadb 上的 并发连接数,慢查询数量,增删改查.请求流量带宽,mysql响应流量带宽等 ...
- ORA-00060: Deadlock detected 模拟死锁产生与解决方案
死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程 ...
随机推荐
- Docker中的镜像分层技术详解
早在集装箱没有出现的时候,码头上还有许多搬运的工人在搬运货物,在集装箱出现以后,码头上看到更多的不是工人,而且集装箱的搬运模式更加单一,更加高效,还有其他的好处,比如:货物多打包在集装箱里面,可以防止 ...
- 使用mvn插件执行工程单元测试OOM的解决办法
在执行mvn test时,maven会启动一个fork进程来运行所有的单元测试类,所以我需要设置的是这个fork进程的jvm参数. 不过最终还是让我找到了http://maven.apache.org ...
- SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- 20145224&20145238 《信息安全系统设计基础》第二次实验
20145224&20145238 <信息安全系统设计基础>第二次实验 课程:信息安全系统设计基础 班级:1452 姓名:陈颢文 荆玉茗 学号:20145224 20145238 ...
- React Native 的高度与宽度设置
React Native中的尺寸都是无单位的,表示的是与设备像素密度无关的逻辑像素点. import React, { Component } from 'react'; import { AppRe ...
- 分布式系统开发的一些相关理论基础——CAP、ACID、BASE
本文主要讲述分布式系统开发的一些相关理论基础. 一.ACID 事务的四个特征: 1.Atomic原子性 事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全 ...
- 微信、QQ浏览器X5内核问题汇总
一. 资料汇总 1.前端H5调起QQ浏览器的总结:http://km.oa.com/group/22486/articles/show/210189?kmref=search 2.Android We ...
- Top Five Hacker Tools Every CISO Should Understand
As the role of the CISO continues to evolve within organizations towards that of an executive level ...
- Python开发入门与实战6-表单
6. 表单 从简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的重要交互手段.本章介绍如何用Django如何对用户通过表单提交的数据进行访问. ...
- Java中Stringbuffer、Arrays、Interger、Character类的特性
1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类.StringBuffer供我们使 ...