Trouble分类
线上故障会有哪几类?
- 内存:大多数应用都会对内存影响巨大,很容易造成内存泄露
- CPU:计算资源吃紧,框架或者开发工具包中一般某种隐藏的逻辑触发了一些死循环或者应用业务逻辑引发的死循环逻辑吃紧了CPU
- 磁盘:产生大量无用文件,或者DOcker应用单元伸缩吃紧磁盘资源等
- 网络:基础建设层(服务器)某些原因断开网络或者应用层面某些逻辑Bug导致问题
工具篇
Linux工具
内存篇
Java应用一般jvm_option
:-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPreTouch -XX:ReservedCodeCacheSize=128m -XX:InitialCodeCacheSize=128m, -Xss512k -Xmx4g -Xms4g,-XX:+UseG1GC -XX:G1HeapRegionSize=4M
如果遇到频繁报出Swap区域使用量过高的异常
- 在项目中添加
-XX:NativeMemoryTracking=detailJVM
参数重启项目 - 使用
jcmd pid VM.native_memory detail
命令查看内存分布情况jcmd
命令显示的内存包含堆内内存、Code区域、通过unsafe.allocateMemory
和DirectByteBuffer
申请的内存,但是不包含其他Native Code(C代码)
申请的堆外内存
国内查看评论需要代理~