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版本坑上面,奉勸大家,不要用這些外掛的大版本,要用小版本
自此問題得以解決。
相關文章
- Istio 升級後踩的坑
- 踩過的坑(一)——web容器升級Web
- Hexo6 升級踩坑指南Hexo
- async語法升級踩坑小記
- # Laravel 5.5 升級到 6.0 踩坑記錄Laravel
- babel 升級 7.X 踩坑記錄Babel
- MySQL5.5升級到MySQL5.7踩坑日記MySql
- jenkins 升級踩坑,主要是403 CSRF報錯問題Jenkins
- oAuth2 升級Spring Cloud Finchley.RELEASE踩坑分享OAuthSpringCloud
- 將自己的站點升級成HTTPS的(瘋狂踩坑)過程HTTP
- ReadWriteLock讀寫鎖升級的踩坑:Kotlin作弊,最好使用StampedLock - javaspecialistsKotlinJava
- Flutter 入門與實戰(五十二):升級踩坑,聊聊 Dart 的 null safetyFlutterDartNull
- Vue1.0+Webpack1+Gulp專案升級構建方案的踩坑路VueWeb
- Apache DolphinScheduler 1.3.4升級至3.1.2版本過程中的踩坑記錄Apache
- 【Vue】Vue1.0+Webpack1+Gulp專案升級構建方案的踩坑路VueWeb
- npm publish的釋出記錄(踩坑記)NPM
- vue2專案升級至vue3方案步驟踩坑Vue
- golang的踩坑Golang
- antd 3.x升4.x踩坑之路~
- python+Appium+夜神模擬器連線---踩坑PythonAPP
- webpack4升級採坑Web
- springboot升級過程中踩坑定位分析記錄 | 京東雲技術團隊Spring Boot
- 記一次版本升級遇到的坑
- GeoServer 踩過的坑Server
- protodep踩坑
- Flutter 踩坑Flutter
- angular踩坑Angular
- CDH踩坑
- vue踩坑Vue
- 相容踩坑
- THEOS踩坑。。。
- 【踩坑筆記】專案出現Permission denied筆記
- 公司ES升級帶來的坑怎麼填?
- 升級Spring Cloud到Finchley後的一點坑SpringCloud
- 小程式踩坑填坑
- ThinkPHP 的 nginx 配置踩坑PHPNginx
- laradock-的踩坑之旅
- 關於calc的踩坑