情况:
项目的导出导入功能突然用不了了,但是服务方(导入导出单独拆分出来了一个数据处理服务)重启后就又可以用了。
客户端调用rpc服务时,调用前的log有打印,但是打印后(调用服务后)就没有下文直接卡住了(还好是异步操作不影响主流程),客户端无报错。
服务方没有发现请求log,也就是说,请求没有打到服务方上来。
但是项目一直稳定运行,且最近也没上线无变动,
也查了下客户端调用的服务方ip,无误
后来ps -aux | grep java看了下-Xms(初始堆大小)和-Xmx(最大堆大小)都是2G(公司的服务管理平台中的服务不配置jvm参数的话默认2G,我们服务由服务管理平台管理),但是服务实例的内存申请了10G,于是猜想是不是内存不够用了,
然后jstat -gcutil 进程号 线程号 命令查看资源使用情况,发现FGC次数有点高,修改了内存大小之后再重启服务,FGC次数大幅度减少。
环境:jdk1.8
附:用到的jstat命令(后文有命令详情)
jstat参数
\*C => (Capacity)区容量
\*U => (Used)使用量
- jstat -gcutil pid 总结垃圾回收统计
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例

项目中的导出导入功能出现问题,调用RPC服务后客户端卡住,服务方未收到请求。检查发现JVM内存设置与实际需求不符,FGC频繁。通过调整-Xms和-Xmx参数,减少FGC次数,问题得到解决。环境为JDK1.8,使用jstat等工具进行监控和诊断。
最低0.47元/天 解锁文章
938

被折叠的 条评论
为什么被折叠?



