MySQL常见问题及性能调优方法收集汇总

  1. 问题:MySQL连接数过多
    现象:提示“ERROR 1040: Too many connections”的错误
    分析:出现此错误的原因,一种是访问量确实很高,MySQL服务器顶不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小。
    解决方案:调整max_connections参数的值
    调整此参数的方法有几种,既可以在编译的时候设置,也可以在MySQL配置文件 my.cnf 中设置,也可以直接使用命令调整并立即生效。
    1、在配置文件my.cnf中设置max_connections的值
    打开MySQL配置文件my.cnf
    [root@www ~]# vi /etc/my.cnf
    找到max_connections一行,修改为(如果没有,则自己在[mysqld]配置项中添加),
    max_connections = 1000
    上面的1000即该参数的值。
    重启MySQL使修改生效2、实时(临时)修改此参数的值
    首先登陆mysql,执行如下命令:
    [root@www ~]# mysql -uroot -p
    然后输入MySQL Root的密码。
    查看当前的Max_connections参数值:
    mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections';

    mysql> show variables like 'max_connections';
    设置该参数的值:
    mysql> set GLOBAL max_connections=1000;
    (注意上面命令的大小写)修改完成后实时生效,无需重启MySQL。MySQL比较理想的最大连接数计算方式为:
    max_used_connections / max_connections * 100% ≈ 85%
    即最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。参考资料:
    关于MySQL的 too many connections:http://www.phpv5.com/blog/tag/show-processlist/
    ERROR 1040: Too many connections:http://blog.phpha.com/archives/1330.html
    max_connections – MySQL性能调优:http://www.bootf.com/472.html
    Server System Variables:https://mariadb.com/kb/en/server-system-variables/#max_connections
  2. 用show processlist查看进程,发现sleep进程数过多
    参考:
    减少MySQL的Sleep进程有效方法及杀死mysql sleep进程的脚本:http://www.3mu.me/?p=1219
  3. 默认用户列表中::1 表示什么意思
    ::1应该是表示本地的IPv6地址
    参考地址:http://segmentfault.com/q/1010000000388864
  4. 问题:不重启MySQL,如何重新生成slow_query.log慢查询日志?
    解决方案:可以通过mysqladmin flush-logs重新生成slow_query.log慢查询日志。
    示例:
    # mysqladmin -uusername -ppwd flush-logs //可以看到生成了新的slow_query.log日志
    参考资料:mysql慢查询日志过大及定期处理脚本:http://coolnull.com/2578.html
发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据