1,最近我们生产服务器在做营销活动的时候突然发生oom,堆内存溢出。这个很让人头疼,
我们开发排查了好长时间,最终找到了问题的所在。这里我先买一个关子,问题的原因大家看完文章就一清二白了。
2,首先我们自己创建一个测试的项目
到spring.io 上面创建一个springboot 的项目组件选择web.这里多说一下阿里最近也出了自己的自己项目构建库,地址https://start.aliyun.com/ 具体使用和spring.io 差不多,有兴趣的同学解压自己看一下。
先写一个template 的配置类,生命为一个bean
在写一个测试的contellor,
这里代码很简单,就是发送一个get请求,传入number 参数,就能指定创建多少个http的连接。
这里我们先用postman 测试一下 结果如下
,这里由于是模拟,我们把堆内存调小一些,发生oom生成dump文件,打印gc详情等。
参数 --
-Xloggc:d:\gc.log 生成gc 的日志
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:\gc.dump 发生oom 生成dump的文件名和目录
-Xms20M //最大堆内存
-Xmx20M //最小堆内存
-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出