2.x信息化平台mysql负载过高性能优化处理方法

现象:客户信息化平台数据库占用内存过高,平台日志有慢查询,平台因此频繁宕机崩溃;


上述图片所示,我们可以使用以下方法进行处理;
1、iostat -c命令查看iowait指标

在服务器cpu及线程等满足情况下绝大多数场景下基本都在0% - 5%,超过百分之20时需要注意磁盘问题,如无法判断可联系问题小组,如磁盘读写较差需及与客户沟通更换磁盘,以满足业务需求;
2、使用数据库连接工具,或使用mysql -uroot -p命令连接数据库;
数据库密码及数据库连接工具可参考以下帖子;

http://svn.seekcy.com/284
3、连接数据库后使用以下命令查看mysql配置最大连接数,数据库缓存池大小,实际响应连接数等数据;

  1. show variables like'%max_connections%';--查看当前配置的最大连接数
  2. show variables like'%max_user_connections%';--查看数据库单用户最大连接数
  3. SHOW STATUS like '%Max_used_connections%'; --查看实际使用响应的连接数
  4. SHOW STATUS like '%Aborted_connects%'; --异常终止告警
  5. SHOW STATUS LIKE 'Threads_connected'; --查看当前打开的连接数
  6. 查看mysql配置:/home/seekcy/database/mysql/my.cnf
  7. show variables like 'innodb_buffer_pool_size'; -- 查看数据库缓冲池大小

3、使用以上命令后如果查看到打开连接数超过配置最大连接数,我们需要修改mysql最大连接数,参考以下链接帖子配置;
http://svn.seekcy.com/425
4、使用free -h 命令查看服务器剩余可用内存;

如上图,如free内存较小,available为fuwu服务器剩余可用存, buff/cache为缓存所用内存,可清理缓存正常使用,我们可以切换服务器连接用户为root使用以下命令清理服务器缓存。

  1. echo 3 > /proc/sys/vm/drop_caches

5、如以上服务器内存较多,可以清理缓存后修改mysql缓存池大小,如内存不够可联系问题小组进一步判断处理,配置缓存池如下;

  1. cd /home/seekcy/database/mysql/
  2. vi my.cnf
  3. innodb_buffer_pool_size = 4294967296; innodb参数修改为4294967296


6、修改完成后保存配置文件,执行以下命令

  1. chmod 644 my.cnf #修改mysql文件权限,这类文件通常包含数据库的敏感信息,比如root密码、数据库名、IP地址等。如果权限设置不当,可能会导致未授权访问或泄露
  2. cd /home/seekcy/database/mysql/support-files/
  3. ./mysql.server restart 重启mysql

7、重启完mysql后,查看负载是否正常,如短时间内持续升高需要升级问题小组继续排查,如负载正常可执行一下操作,删除下图所示dump日志文件,下图所示后缀如果有带日志也一并删除,日志文件目录为/home/seekcy/wwyt/wwyt-server/logs/下

8、日志删除完成,问题正常处理完成,如后续平台非服务器问题,慢sql等导致宕机,可以提供最新dump日志文件升级问题小组,研发分析具体原因;
ZGL(0716)

转载请注明作者和出处,并添加本页链接。
原文链接: //svn.seekcy.com/802