JVM系统优化实践(20):GC生产环境案例(三)

您好,这里是码农镖局CSDN博客,欢迎您来,欢迎您再来~


某新手开发工程师接到了一个保存Elasticsearch日志的任务,以供后续分析之用。但写代码的时候,误将保存日志的代码段弄成了无限循环,程序启动后,没用多久就崩溃了。

另一名工程师在动态创建类时,没有实现动态代理机制,也就没有缓存动态生成的类,导致每次都要重新生成。因此当高并发时,瞬间创建了大量的类,塞满Metaspace,内存溢出OOM。一般OOM的生产环境解决方案只有两种。一是利用Zabbix、Open-Falcon、Prometheus之类成熟的监控平台,二是自研一些简单的监控组件,例如利用hystrix的监控功能实现对系统的简单监控。较为成熟的监控体系和监控指标包括:

1、机器(资源)负载监控,如CPU使用率、磁盘使用量和剩余空间

2、内存使用量

3、网络负载

4、JVM Full GC的频率

5、业务指标,如订单量阈值、try-catch抛异常等

如果当发生OOM时需要自动dump内存快照,那么可以在JVM中加入如下参数:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/work/oom

通用的JVM模板示例:

JVM系统优化实践(20):GC生产环境案例(三)_第1张图片

 


感谢您的大驾光临!欢迎骚扰,不胜荣幸~

你可能感兴趣的:(技术,jvm,java,Java,GC)