RPC 接口调用框架如下:
当 Register 出现异常,Provider 重复注册地址,Register 就会不停地向 Consumer 推送大量的无效地址,造成 RPC 调用失败、超时等异常。
系统崩溃定位如下(就像滚雪球一样,迅速的崩溃):
我们通过当时的快照进行分析:
服务器系能监控(Load 飙升)
服务器性能监控(Net IO 下降)
JVM 监控 堆区(持续高位)
JVM 监控 Full GC 频繁
JVM 监控 线程数高
监控日志(IO 、GC、内存溢出)
JVM 栈信息(BIO 阻塞)
定位问题后重启服务器,再进行监控:
JVM Young GC
JMV Full GC
JVM Heap
总结
分析系统,线程数高,CPU、Load、内存良好,一定是出现线程死锁,分析 jstack。
分析系统,线程数高,CPU 抖动、Load 飙升、频繁 Full GC,而 Net IO 降低,一定是有内存泄露,分析 jmap。
转载请并标注: “本文转载自 linkedkeeper.com (文/张松然)”