记一次数据库流量暴涨的处理记录

一世执手 提交于 2019-12-11 15:37:28

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

如上图所示,监控到服务器的网上流量暴涨,这是一台数据库服务器,有3306和3307两个实例,只跑了MySQL数据库,没有其他应用。

中间件的服务器网卡流量和连接数都是正常的,没有报警。

从监控时间点看:

11:00问题出现

11:10管理员反应过来有问题,然后开始处理

11:30处理完

11:40监控完全正常

从时间点来看,用时30分钟解决。


下面来说下处理过程:

1、登录数据库服务器,用iftop命令查看,这台服务器跟哪些服务器是有大流量往来的

2、发现有一台后台服务的服务器,跟数据库往来的流量比较大,可以确定是后台的服务器跟数据库服务器在传输大数据。

3、登陆后台服务器查看,用命令nethogs eth0查看是哪个应用发出的大流量请求。

可以看到,PID号为8026的进程发送和接收的带宽占用最高。可以看到,这是一个java程序,用命令ps -ef找到这个进程的相关信息。

4、查看java进程内存回收的信息,明显P区快要占满了,导致回收时间比较长。

5、查看对应日志,判断出当时是jvm内存不够,又有大对象要存,然后垃圾回收时间过长,导致服务响应慢,这个进程,向MySQL发送了一条查询请求(大数据量的),然后自己因为内部原因处理响应变慢,MySQL回送请求时,受理不了,然后导致MySQL一直在重试发送数据。

6、将故障发生的原因跟开发人员沟通下,优化代码,问题得已解决。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!