1.正式環境更新後不就服務器cpu飆升,最終服務器卡死,重啓tomcat後正常,不就後又再次卡死.javascript
緣由:更新時使用./shutdown.sh中止服務器,未能將quartz線程殺死,從新啓動以後,原認定任務仍然在繼續執行.css
解決:kill 掉進程後從新啓動正常. 在代碼中增長服務器中止後,手動關閉quartz任務.html
public class QuartzStop implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { try { Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler(); defaultScheduler.shutdown(true); } catch (Exception e) { e.printStackTrace(); } } }
2.hessian鏈接通道關閉,但接口地址可以正常訪問java
緣由:設置的hessian鏈接超時關閉時間太短,在接口尚未返回或整準備返回執行結果時,發現通道已經被關閉.mysql
解決:增加鏈接超時關閉時長,改進接口熔斷機制.linux
HessianProxyFactory hessianProxyFactory = new HessianProxyFactory(); hessianProxyFactory.setConnectTimeout(10000); hessianProxyFactory.setReadTimeout(10000);
3.外網,內網可以正常訪問頁面,可是專網沒法打開頁面,但接口可以正常訪問sql
緣由:調試發現,頁面須要的其中一個js文件返回 http 206 ,curl時也同樣,在分段續傳的過程當中,防火牆將js其中一段截取了下來,致使續傳永遠沒法完成,持續等待.數據庫
解決:開啓服務器壓縮,採用gzip方式傳輸瀏覽器
可是,某些瀏覽器不支持,會增長服務器以及客戶端的cpu壓力緩存
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"
4. 新建任務時,任務的建立時間忽然變成了明天的時間,服務器date -R顯示時間時區均正常
緣由:經過hwclock --show 查看linux硬件時間時發現與系統時間相差8小時,而程序獲取到的時間正好是這個時間,也就是說代碼 System.currentTimeMillis()
獲取到了硬件時間而不是系統時間,奇怪的是過段時間去查看系統硬件時間又變回正常,暫未找到解決辦法.
5.mysql 行鎖以後沒法釋放,出現死鎖,整個業務卡死
緣由:mysql 的select ..for update 與oracle存在差別,mysql 不支持nowait的方式,在等待的過程當中,程序向下繼續執行了長select操做,同時默認的等待超時時間過長(數據庫設置兩分鐘),致使任務直接卡住兩分鐘,在此過程當中,整個業務卡死,沒法操做.
解決:取消了鎖行後的長select操做,同時將行鎖的釋放提早,同時在分支處理方式中添加釋放鎖的操做.
6.ORA-01882: timezone region not found
JAVA_OPTS="-Duser.region=CN -Duser.timezone=GMT=GMT+8"
7.tomcat版本升級以後url訪問失敗
tomcat 新版本對於url連接中的特殊字符處理,舊版本中空格和中文不作處理可能能夠識別,但在新版本中,某些瀏覽器下中文必須urlencode ,空格必須移除。原來處理圖片緩存的url連接以後跟的new Date()須要替換成毫秒值。
8.elastic job 啓動 Splitter 類中 splitToList 方法找不到。
更換guava 版本爲18.0再也不出現。