用户反馈服务页面数据刷不出来 登录服务器查看内存和cpu使用情况 发现可用内存几乎没有
查看服务器日志发现大量内存溢出报错
ps -ef|grep java 查看服务器进程id
使用 ./jstat -gcutil -h20 8124 1000命令查看GC情况
此图为问题修复后的截图,当时服务器FGC数据狂增 每秒增加2次的频率
查看java进程内存使用情况
(此图为问题修复后的截图 只是为了展示命令显示内容)
使用 jmap -dump:format=b,file=/zhmh/project/isee/jmap_heapdump.hprof <pid>命令dump服务内存使用快照
使用eclipse memory工具打开hprof文件
猜测有可能是tomcat接受http请求缓存问题
网上搜索关键字 24 instances of “org.apache.coyote.http11.Http11OutputBuffer”
查看代码里面的配置 确实有问题 设置缓冲为30m
这个缓冲区的大小是固定的 不是动态扩展的
修改缓冲区大小为1m然后发布服务
观察服务器内存使用情况
原来java进程占用内存的比例达到32% 而启动命令里面设置最大内存大小为2G 所以发生了一直内存溢出
查看Java进程内部使用情况
观察GC情况,发现GC情况已经稳定 FGC已经不在频繁触发
常用命令
/zhmh/java/jdk1.8.0_144/bin/jmap -heap 8124 查看堆使用情况
jmap -histo 5352 查看类统计信息
top -p 8124 查看Java进程占用cpu内存使用情况