【推荐】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、将故障发生的原因跟开发人员沟通下,优化代码,问题得已解决。
来源:oschina
链接:https://my.oschina.net/u/3992198/blog/3141773