我們使用開源的xxljob封裝了乙個job服務作為平台的job元件。有乙個專案組生產上總是隔些天就會有一次異常發生,排程失敗,且沒什麼報錯資訊。jobadmin、執行器服務都是三颱伺服器集群部署,且資料庫是三颱集群讀寫分離部署。
後排查發現如下:
失敗的那次任務時間點上排程時,執行器服務列表是空的,導致排程失敗。但那個時間點執行器服務也有註冊成功的日誌。
再排查發現jobadmin中對應有註冊清空資訊,對應執行器的ip隔會就會被置為空,且三颱jobadmin集群日誌中都頻繁出現。
而後面正常執行的那天的日誌中都沒有置空日誌出現。
xxljob此處有乙個心跳檢測監控:jobregistrymonitorhelper,
public class jobregistrymonitorhelper
private thread registrythread;
private volatile boolean tostop = false;
public void start()
if (!registrylist.contains(item.getregistryvalue())) }}
}// fresh group address
for (adminqrtztriggergroup group: grouplist)
group.setaddresslist(addressliststr);
xxljobdynamicscheduler.xxljobgroupdao.update(group); }}
} catch (exception e) ", e);
}try catch (interruptedexception e) ", e);}}
}});
registrythread.setdaemon(true);
registrythread.start();
} public void tostop() catch (interruptedexception e)
}}
每隔三秒跑一次。執行器服務心跳註冊時,註冊進admin_qrtz_trigger_registry表,jobadmin註冊資訊檢測再更新到執行器組表admin_qrtz_trigger_group。如下sql。正常應該是30秒註冊一次,超過90秒沒有更新註冊的剔除,也就是超過三次註冊失敗的。但改造時sql超時時間處理除了3,變成了超過30秒沒有更新註冊,一次失敗就給剔除了。再加上sql集群伺服器時間不一致相差比較大,註冊資訊寫入時是寫庫的時間,讀的時候是讀庫的時間,sql時間判斷上異常概率便提公升了。
1、"delete from admin_qrtz_trigger_registry where update_time < date_add(sysdate(), interval (?/ -3) second)","success":"true","parameters":"[90]"}
2、select t.id, t.registry_group, t.registry_key, t.registry_value, t.update_time from admin_qrtz_trigger_registry t where update_time > date_add(sysdate(), interval (?/ -3) second)","success":"true","parameters":"[90]"}
3、update admin_qrtz_trigger_grouptitle = #,
order_code = #,
address_type = #,
address_list = #
where id = #
記一次ActiveMQ的異常排查
做乙個小專案時,選擇使用 activemq 作為中介軟體,負責專案內各元件的通訊。剛部署時,整個專案執行正常。執行 n 天後,發現 activemq 出乎意料地自動重啟,進而導致佇列中未來得及消費的資料丟失。剛開始,以為是配置檔案 activemq.xml 的問題,但是仔細核查後,發現沒有什麼明顯的...
記一次線上問題排查
這次線上問題來的比較突然,影響也大,用部落格記錄下整個過程,也當作是對這次事故的一次總結歸納。day1 2018年06月21號上午10點,收到運營同事通知,http com api 訪問量劇增,日誌量達到80g 天,而且有上公升趨勢。運營同事讓我們排查,這種訪問是否正常。運營統計訪問量 收到通知後立...
記一次前端bug排查
前言 時隔三年,終於記得要找回賬號密碼開始寫筆記了,這周剛加入了乙個後台管理系統專案,測試反饋系統重新整理時經常會直接登出,嚴詞要求解決這個 重大 bug,so尷尬。更嚴重的是發現系統在ie上直接登不進去,嬸可忍叔不可忍,於是我開啟了苦逼的尋bug之路。既然是登出了,當然會有登出請求,chrome重...