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.6升级jdk1.8踩出的神坑相关推荐
- 一次jdk1.7升级jdk1.8后导致redis运行时blocked_clients过多问题解决
一次jdk1.7升级jdk1.8后导致redis运行时blocked_clients过多问题解决 参考文章: (1)一次jdk1.7升级jdk1.8后导致redis运行时blocked_clients ...
- jdk1.7升级jdk1.8
** 记录jdk1.7升级jdk1.8 ** (需要注册,随便瞎填注册一下) 安装jdk1.8版本(下载链接:http://www.oracle.com/technetwork/java/javase ...
- linux 升级java_linux 升级jdk1.8
1.首先根据实际情况准备好包 jdk-8u45-linux-x64.rpm 2.先不管是否已安装JDK1.6还是JDK1.7,先下载 jdk-8u45-linux-x64.rpm 然后上传到 /us ...
- Linux下JDK1.6升级1.8版本
先不管是否已安装JDK1.6还是JDK1.7,先下载 jdk-8u45-linux-x64.rpm 然后上传到 /usr/local/src 去.当然其他目录也可以.这里是默认位置 给所有用户添加 ...
- Linux下JDK1.7升级1.8版本
Linux下JDK1.7升级1.8版本 下载需要升级的jdk 这里我需要升级的是jdk1.8 然后上传到 /usr/local/src 去.当然其他目录也可以.这里是默认位置. 如果你的liunx连接 ...
- 常见面试题:为什么HashMap不是线程安全的呢?(JDK1.7和JDK1.8角度)(看完你就能和面试官笑谈人生了)
title: 常见面试题:为什么HashMap不是线程安全的呢?(JDK1.7和JDK1.8角度)(看完你就能和面试官笑谈人生了) tags: 面试常见题 常见面试题:为什么HashMap不是线程安全 ...
- JDK1.5 与 JDK1.6的新特性
JDK1.5 与 JDK1.6的新特性 收藏 一.JDK1.5的新特性 了解Java语言的特色及相关术语 泛型:泛型.通配符.有限制通配符.泛型方法 加强循环 自动装箱/拆箱 枚举 可变参数 静态引 ...
- JDK1.7和JDK1.8中HashMap是线程不安全的,并发容器ConcurrentHashMap模型
一.HashMap是线程不安全的 前言 只要是对于集合有一定了解的一定都知道HashMap是线程不安全的,我们应该使用ConcurrentHashMap.但是为什么HashMap是线程不安全的呢,之前 ...
- HashMap源码分析-jdk1.6和jdk1.8的区别
2019独角兽企业重金招聘Python工程师标准>>> 在java集合中,HashMap是用来存放一组键值对的数,也就是key-value形式的数据,而在jdk1.6和jdk1.8的 ...
最新文章
- 详解Oracle安装与配置.
- .bat脚本自动yes_推荐|PyToBI自动标注韵律
- Unity游戏暂停之Update与FixedUpdate区别
- java如何保证redis设置过期时间的原子性_2020年4月Redis面试题和答案整理
- Git知识点笔记-基本常识
- StringBuffer
- 参数名称 java_java – 具有重要名称的WSDL中的参数名称
- cubrid php,PHP - Manual: CUBRID (官方文档)
- log4j 打印线程号配置_Log4J日志整合及配置详解
- 团体程序设计天梯赛-练习集-L1-036. A乘以B
- RPG Maker的引擎分析(一)(二)
- java db4o,DB4O--java对象数据库
- 客户管理系统代码项目_低代码案例:快速交付包含门店销售终端的SCM供应链管理系统...
- python-opencv视频转图片+图片转视频(步骤详解)(亲测有效)
- ensp:静态路由配置和ospf动态路由配置
- 一条互联网广告多少钱?
- 北上广深——这无处安放的肉身
- 什么是Apple Rosetta 2
- 后羿采集器怎么导出数据_后羿采集器如何采集亚马逊评论
- 开源一文多发平台ArtiPub,让文章随处可阅