XXL-Job定時(shí)任務(wù)時(shí)間偏差8小時(shí)的問題解決辦法
前言
最近把XXL-Job定時(shí)任務(wù)遷移到新服務(wù)器時(shí),遇到了一個(gè)讓人困惑的問題:任務(wù)設(shè)置在上午10點(diǎn)執(zhí)行,但執(zhí)行調(diào)度和執(zhí)行卻顯示晚上18點(diǎn)。經(jīng)過排查,發(fā)現(xiàn)問題根源是A服務(wù)器的時(shí)間少了8個(gè)小時(shí)!
所有任務(wù)執(zhí)行時(shí)間都多了8小時(shí),如圖:

問題分析
執(zhí)行時(shí)間線
1.我設(shè)置的時(shí)間:10:00(我以為的北京時(shí)間) 2.A服務(wù)器理解的時(shí)間:10:00 UTC(相當(dāng)于北京時(shí)間18:00) 3.觸發(fā)任務(wù):A服務(wù)器在UTC時(shí)間10:00向B服務(wù)器發(fā)送請(qǐng)求 4.B服務(wù)器接收時(shí)刻:北京時(shí)間18:00(UTC 10:00 + 8小時(shí)) 5.執(zhí)行任務(wù):北京時(shí)間18:00
解決方案:修復(fù)A服務(wù)器時(shí)間
第一步:檢查B服務(wù)器時(shí)區(qū)配置
登錄B服務(wù)器,執(zhí)行以下命令:
# 查看當(dāng)前時(shí)間和時(shí)區(qū) date timedatectl # 預(yù)期正確輸出(北京時(shí)間): # Wed May 15 10:00:00 CST 2024 # 錯(cuò)誤輸出示例: # Wed May 15 02:00:00 UTC 2024
第二步:修正B服務(wù)器時(shí)區(qū)
CentOS/RedHat系統(tǒng):
# 設(shè)置時(shí)區(qū)為上海 timedatectl set-timezone Asia/Shanghai # 驗(yàn)證設(shè)置 date
Ubuntu/Debian系統(tǒng):
# 交互式設(shè)置時(shí)區(qū) sudo dpkg-reconfigure tzdata # 選擇 Asia -> Shanghai
第三步:確保時(shí)間同步
# 安裝并配置NTP時(shí)間同步 yum install -y ntp # CentOS sudo apt-get update # Ubuntu # 驗(yàn)證當(dāng)前時(shí)間狀態(tài) timedatectl status # 確認(rèn)為Time zone: Asia/Shanghai (CST, +0800)
第四步:驗(yàn)證B服務(wù)器配置
雖然問題主要出在A服務(wù)器,但確保環(huán)境一致性很重要:
# 在A服務(wù)器上也執(zhí)行同樣的檢查 date timedatectl
確保B服務(wù)器也使用 Asia/Shanghai 時(shí)區(qū)。
最后一定要記得重啟定時(shí)任務(wù)。
在XXL-Job管理界面中確認(rèn)
登錄XXL-Job Admin管理后臺(tái),查看調(diào)度日志:
1.調(diào)度時(shí)間:反映A服務(wù)器(調(diào)度中心)的觸發(fā)時(shí)間 2.執(zhí)行時(shí)間:來自B服務(wù)器(執(zhí)行器)上報(bào)的時(shí)間
修復(fù)前后對(duì)比: 修復(fù)前:調(diào)度時(shí)間 10:00,執(zhí)行時(shí)間 18:00 修復(fù)后:調(diào)度時(shí)間 10:00,執(zhí)行時(shí)間 10:00
實(shí)踐建議
1.環(huán)境標(biāo)準(zhǔn)化
- 所有服務(wù)器統(tǒng)一使用
Asia/Shanghai時(shí)區(qū) - 使用相同的時(shí)間同步服務(wù)
2.日志規(guī)范
- 在業(yè)務(wù)日志中明確輸出時(shí)區(qū)信息
- 考慮使用UTC時(shí)間存儲(chǔ)日志,展示時(shí)按需轉(zhuǎn)換
總結(jié)
這個(gè)問題本質(zhì)上是一個(gè)環(huán)境配置一致性問題。在分布式系統(tǒng)中,時(shí)間一致性是經(jīng)常被忽視卻又至關(guān)重要的基礎(chǔ)配置。 XXL-Job作為一個(gè)優(yōu)秀的分布式任務(wù)調(diào)度框架,其本身的時(shí)間機(jī)制是清晰的,問題往往出現(xiàn)在環(huán)境配置層面。
下次當(dāng)你發(fā)現(xiàn)定時(shí)任務(wù)執(zhí)行時(shí)間對(duì)不上時(shí),首先檢查服務(wù)器的時(shí)區(qū)和時(shí)間同步配置,這可能會(huì)為你節(jié)省大量的排查時(shí)間。
到此這篇關(guān)于XXL-Job定時(shí)任務(wù)時(shí)間偏差8小時(shí)的問題解決辦法的文章就介紹到這了,更多相關(guān)XXL-Job定時(shí)任務(wù)時(shí)間偏差8小時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot路徑映射配置的實(shí)現(xiàn)步驟
本文介紹了如何在SpringBoot項(xiàng)目中配置路徑映射,使得除static目錄外的資源可被訪問,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-08-08
SpringBoot接口惡意刷新和暴力請(qǐng)求的解決方法
在實(shí)際項(xiàng)目使用中,必須要考慮服務(wù)的安全性,當(dāng)服務(wù)部署到互聯(lián)網(wǎng)以后,就要考慮服務(wù)被惡意請(qǐng)求和暴力攻擊的情況,所以本文給大家介紹了SpringBoot接口惡意刷新和暴力請(qǐng)求的解決方法,需要的朋友可以參考下2024-11-11
JavaCV攝像頭實(shí)戰(zhàn)之實(shí)現(xiàn)口罩檢測(cè)
這篇文章主要介紹了利用JavaCV實(shí)現(xiàn)口罩檢測(cè),功能是檢測(cè)攝像頭內(nèi)的人是否帶了口罩,把檢測(cè)結(jié)果實(shí)時(shí)標(biāo)注在預(yù)覽窗口。感興趣的可以試一試2022-01-01
實(shí)例解析Java程序中正則表達(dá)式的貪婪模式匹配
JAVA Comparator 和 Comparable接口使用方法
避免IDEA每次打開新項(xiàng)目都重復(fù)配置Maven的解決方案
springmvc實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)信息為excle表格示例代碼
RabbitMQ的消息確認(rèn)機(jī)制的詳細(xì)總結(jié)

