mysql 常见问题收集

本文介绍了解决MySQL连接数满导致的504错误的方法,包括检查当前连接数、磁盘空间容量、系统IO资源占用及磁盘读写情况;通过线程ID情况排查问题;使用desc检查SQL语句优化查询效率;并提出了缓存、添加索引和开启慢查询日志等建议。
摘要由CSDN通过智能技术生成

mysql连接数(max_connections)。

mysql 连接数满是很常见问题,其中主要问题体现在php执行代码报错504。
php在执行mysql读取的时候因为长时间的等待超过了PHP.ini(max_excute_time)时间而返回的错误。

1、show processlist

0, 检查当前连接数简单查看数据库的排列执行的信息。
1,df -h:检查磁盘空间容量情况(此类情况居多,往往binglog数据占了很大部分)
2,iotop: 查看当前系统IO资源占用,找出占IO资源的进程。
3,hdparm -Tt /dev/vdb:检查磁盘读写情况。整个磁盘读写速度(有时候云商磁盘到期会降低磁盘IO)

2、检查线程ID情况

执行语句:SELECT * FROM information_schema.INNODB_TRX order by trx_mysql_thread_id desc。
0,trx_mysql_thread_id: 线程id,与show processlist中的id对应
1,trx_state: 线程状态,show processlist中的state
2,trx_query: 线程执行的sql语句。
3,trx_operation_state: 当前线程执行sql语句状态
4,以上信息与其他信息可以初步分析问题所在

3、使用desc检查sql语句情况

sql语句在select时候没有索引,以及查询sql语句多的情况下,会提高查询时间,不会锁表但会造成大量的链接。
1, desc sql: 检查sql执行情况。可以得到rows,keys等基础信息。
2,索引: 添加索引,包括联合索引
3,优化sql语句,使用join链接查询后,会占用一部分内存空间,如果内存不够用,可能需要使用或加大swap内存。
4,对于select的非即使数据,在业务端优先采用缓存,降低对数据的query次数。
5,开启mysql_slow_log,定时发送slow_log慢日志。
6,数据库问题不是运维问题,是需要开发与运维协作完成的

mysql 用户与连接数

0,单例模式会创造一个用户。
1,一个event事件代表一次链接请求。
2,如果在高并发,数据库性能消耗较大的情况下。可需要使用缓存:如redis对sql的结果集进行缓存,降低mysql服务的磁盘查询压力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值