jdk1.6升级jdk1.8踩出的神坑
作者:互联网
过程:
周四当晚jdk从1.6升级到1.8,生产流程未出现异常。
第二天上午就炸了,被运维通知系统运行缓慢,业务人员已经炸锅。
然后,可怕的系统问题排查之路开始了。
排查过程:
1、从weblogic控制台看,发现有独占线程72个
此独占线程我分析和系统运行缓慢有关,但排查线程文件也未发现问题,等待线程和锁线程都未发现问题
2、用户反馈外网不行,内网可以(这就奇怪了)
通过排查确实外网巨慢,内网能接受,但是也是有点慢的
网络组排查未发现问题,nginx配置排查也无问题
3、排查数据库
未发现占用时间长的sql
这就走进了死胡同,似乎看不到希望了
然后一顿看日志百度,都无济于事
4、调整jvm参数
百度后调整jvm参数,这个方向应该也没问题,毕竟升级了jdk1.8
https://www.cnblogs.com/jtlgb/p/10276258.html
但是调整了jvm也于事无补,没有任何优化
然后发现服务器cpu占用过高,发现系统频繁GC,新生代频繁GC,一秒好几次,都未到老年代就full gc
后来调整了GC内存的大小以及垃圾回收的jvm优化
垃圾回收调优:https://blog.csdn.net/leeket/article/details/10995321
发现都解决不了问题
cpu过高抓取相关进程:https://blog.csdn.net/u010248330/article/details/80080605
5、回归代码问题
本地启动能重现,但是通过日志各种打印都无法定位到问题,最后发现
Spring MVC的注解功能,完成请求和注解POJO的映射(前端form表单提交,后端实体类接受,通过springbean反射实现)
巨慢。
配置如下:
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<mvc:annotation-driven conversion-service="conversionService">
<mvc:message-converters register-defaults="true">
<!-- fastjosn spring support 解决返回json乱码问题 -->
<bean id="jsonConverter"
class="ins.framework.utils.support.MappingFastJsonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
<property name="serializerFeature">
<list>
<value>WriteMapNullValue</value>
<value>QuoteFieldNames</value>
</list>
</property>
</bean>
</mvc:message-converters>
<mvc:argument-resolvers>
<bean class="ins.framework.web.bind.method.annotation.FormModelMethodArgumentResolver" />
</mvc:argument-resolvers>
</mvc:annotation-driven>
通过这一点结合升级jdk版本及jar包依赖,发现spring从3.2.6升级到了4.0.0,最后百度发现4.0.0存在问题,
:https://www.jianshu.com/p/69ccaab0add7
最后升级到4.0.6版本,我去,问题得以解决。。。。
不知道是不是运气不好,踩到了4.0.0的spring版本坑上面,奉劝大家,不要用这些插件的大版本,要用小版本
自此问题得以解决。
标签:发现,jdk1.8,https,神坑,jdk1.6,排查,线程,jvm,4.0 来源: https://blog.csdn.net/cjlcc/article/details/110643914