东红物流网站建设规划书,网页设计师作品集,重庆网络公司做什么生意好,aws wordpress区别您好#xff0c;这里是「码农镖局」CSDN博客#xff0c;欢迎您来#xff0c;欢迎您再来#xff5e; 在互联网大厂中#xff0c;对每天亿级流量的日志进行清洗、整理是非常常见的工作。在某个系统中#xff0c;需要对用户的访问日志做脱敏处理#xff0c;也就是清洗掉姓名…您好这里是「码农镖局」CSDN博客欢迎您来欢迎您再来 在互联网大厂中对每天亿级流量的日志进行清洗、整理是非常常见的工作。在某个系统中需要对用户的访问日志做脱敏处理也就是清洗掉姓名、身份证号、手机号等个人隐私信息后在保存到数据库中或者交付给其他应用使用。
系统的设计者是直接从kafka中获得的日志数据再交由清洗系统进行处理。结构图是在这样的 一段时间后发现系统运行越来越慢还出现了卡顿现象。经过调取GC日志文件后发现业务代码中出现了大量的递归操作。于是又通过MAT工具分析OOM快照定位递归代码产生的地方。最终得出的结论是递归调用次数并不是很多几十次而已完全在合理范围内。但递归所创建的总的char[]数组大小1G左右。由此可知并不一定全是代码问题。继续顺着问题往下查通过排查JVM参数的设置发现JVM的堆内存设置过小仅有1G而且年轻代内存也过小。这才导致系统频繁卡顿原来是在不停地执行GC。 所以解决方案就非常明确了。 该系统部署在Tomcat中。解决了年轻代的问题没过多久又出现了经常假死但过一会又能正常访问。这就有点让人费解了。起初以为是硬件资源不足所以使用top命令检查机器资源使用情况。针对机器配置4C8G和资源状况1%CPU和50%RAM对系统问题进行初步排查定位。然后用通过jstat分析没有发现新的OOM和异常的GC。通过导出内存快照使用MAT进行分析最终发现有太多的ClassLoader而且每个ClassLoader都加载了大量的byte[]数组。原来为了在系统启动时就做一些业务上的干预开发工程师对ClassLoader做了一些自定义的修改而没有顾忌对性能的消耗。因此解决方案也非常简单
1、修改自定义ClassLoader的加载方式
2、限制ClassLoader的创建数量。
再来稍微回顾一下
GC问题定位一般会采取
1、分析GC日志
2、使用jstat工具
3、使用jmap工具。
而OOM问题的分析解决则一般会采取
1、线上系统监控
2、用MAT工具。
这两种方法来解决。 感谢您的大驾光临欢迎骚扰不胜荣幸