Supervisor exit status 143
文章目錄服務器沒有重啟Java服務為什么自動重啟一次Ubuntu自動更新導致Supervisor服務重啟的排查實錄故障背景故障現象exit status 143是什么意思SIGTERM和SIGKILL區別排查Supervisor是否異常繼續追查是誰觸發systemd停止服務定位Ubuntu自動更新任務完整故障鏈路分析為什么升級glibc會影響業務服務這次問題為什么不容易發現服務器沒有重啟Java沒有崩潰Supervisor沒有故障生產環境優化建議生產服務器關閉自動升級設置統一維護窗口完善服務監控總結服務器沒有重啟Java服務為什么自動重啟一次Ubuntu自動更新導致Supervisor服務重啟的排查實錄故障背景在生產環境運維過程中經常會遇到這樣的問題服務器看起來一切正常沒有發生重啟但是業務服務突然出現短暫中斷然后自動恢復。這類問題往往比較隱蔽。如果只看應用日志很容易誤判為Java應用異常退出JVM崩潰Supervisor異常服務器故障但實際生產環境中還有一種情況容易被忽略Linux系統自動維護任務可能會間接影響業務服務。本文記錄一次真實生產環境問題排查過程Ubuntu服務器上的Java服務凌晨自動重啟通過Supervisor、systemd、apt日志逐層分析最終定位到unattended-upgrades自動升級glibc組件導致systemd重新加載服務。故障現象業務反饋2026年5月20日 06:15左右業務接口出現短暫異常。查看服務器上的Supervisor日志tail-100/var/log/supervisor/supervisord.log發現2026-05-20 06:15:58,750 INFO waiting for filebeat, server, server2 to die 2026-05-20 06:15:58,883 WARN received SIGTERM indicating exit request 2026-05-20 06:16:00,193 WARN stopped: server2 (exit status 143) 2026-05-20 06:16:02,958 WARN stopped: server (exit status 143) 2026-05-20 06:16:03,983 INFO stopped: filebeat (exit status 0)從日志來看server停止server2停止filebeat停止隨后服務重新啟動初步判斷業務進程不是崩潰而是被主動停止。圖片說明Supervisor收到SIGTERM信號Java服務退出狀態為143。exit status 143是什么意思很多運維人員看到exit status 143第一反應服務異常退出實際上并不是。Linux進程退出碼規則退出碼 128 信號編號其中SIGTERM信號編號15所以128 15 143因此exit status 143表示進程收到SIGTERM信號并進行了正常退出。也就是說這不是kill-9PID強制殺死。而是kill-15PID優雅終止。SIGTERM和SIGKILL區別信號編號說明SIGTERM15請求程序優雅退出SIGKILL9強制立即結束SIGINT2CtrlC中斷生產環境中正常停止服務systemctl stop xxx通常發送SIGTERM給應用一個機會保存數據關閉連接提交事務排查Supervisor是否異常查看Supervisor狀態systemctl status supervisor結果Active: active (running) Main PID: 917203 (supervisord) Active since: Tue 2026-05-20 06:16:04 UTC發現Supervisor剛剛啟動。說明Supervisor不是一直運行。它在06:16:04重新啟動。繼續查看systemd日志journalctl-usupervisor--since2026-05-20 06:10:00--until2026-05-20 06:20:00發現May 20 06:15:58 systemd[1]: Stopping supervisor.service關鍵點不是Supervisor自己退出。而是systemd主動停止了Supervisor。繼續追查是誰觸發systemd停止服務繼續查看系統日志journalctl\--since2026-05-20 06:14:00\--until2026-05-20 06:17:00發現關鍵日志May 20 06:15:49 cbf systemd[1]: Reexecuting requested from client PID 916314 (systemctl)同時發現May 20 06:15:32 cbf systemd[1]: Starting apt-daily-upgrade.service這里出現了重要線索apt-daily-upgrade.serviceUbuntu自動更新任務。定位Ubuntu自動更新任務Ubuntu默認開啟unattended-upgrades用于自動安裝安全補丁系統組件更新查看日志cat/var/log/unattended-upgrades/unattended-upgrades.log發現2026-05-20 06:15:33 INFO Starting unattended upgrades script 2026-05-20 06:15:45 INFO Packages that will be upgraded: libc-bin libc-dev-bin libc-devtools libc6 libc6-dev locales最終確認此次自動升級內容libc6 libc-bin locales其中libc6就是Linux系統核心運行庫glibc。完整故障鏈路分析最終整個過程如下Ubuntu unattended-upgrades | | 自動升級glibc(libc6) | | systemctl觸發systemd reexec | | systemd重新加載服務 | | supervisor.service停止 | | 執行ExecStop: supervisorctl shutdown | | Supervisor發送SIGTERM | | Java服務退出 (exit status 143) | | supervisor重新啟動 | | Java服務重新運行為什么升級glibc會影響業務服務很多人可能會疑惑更新一個系統庫為什么會影響Java服務原因Linux應用運行時依賴系統基礎庫。例如Java | JVM | 系統調用 | glibc | Linux Kernelglibc屬于Linux最核心的基礎組件之一。升級glibc后新啟動進程使用新版本老進程仍然使用舊內存映射systemd可能執行重新加載為了保證系統狀態一致部分服務可能被重新啟動。這次問題為什么不容易發現因為幾個現象很容易誤判。服務器沒有重啟執行uptime-s發現服務器啟動時間正常。所以排除服務器宕機云主機重啟Java沒有崩潰不是OutOfMemoryError也不是JVM crash而是SIGTERM正常退出。Supervisor沒有故障Supervisor只是被systemd要求停止。屬于被動退出生產環境優化建議生產服務器關閉自動升級生產環境不建議每天自動升級系統組件尤其是Java應用服務器數據庫服務器中間件服務器查看cat/etc/apt/apt.conf.d/20auto-upgrades如果APT::Periodic::Unattended-Upgrade 1;修改APT::Periodic::Unattended-Upgrade 0;設置統一維護窗口推薦開發環境 自動更新 測試環境 定期更新 生產環境 人工審批 維護窗口例如每周周六凌晨02:00-04:00進行系統補丁軟件升級服務重啟完善服務監控監控不要只關注服務器存活還應該關注Java進程狀態Supervisor狀態HTTP接口JVM指標服務啟動時間例如發現服務啟動時間突然變化即可提前發現重啟事件。總結本次故障最終定位Ubuntu服務器開啟了unattended-upgrades自動更新機制在凌晨自動升級libc6等系統核心組件觸發systemd重新加載服務導致Supervisor托管的Java服務收到SIGTERM信號并重新啟動。整個排查過程業務異常 ↓ Supervisor日志 ↓ exit status 143 ↓ 確認SIGTERM ↓ systemd日志 ↓ 發現服務停止來源 ↓ apt日志 ↓ 定位unattended-upgrades ↓ 確認glibc升級這個案例說明生產環境出現服務重啟時不要只關注應用本身。Linux系統層面的systemd自動更新定時任務云初始化系統維護任務都有可能影響業務運行。作為運維人員需要建立從應用層 → 服務管理層 → 系統層 → 操作系統維護機制的完整排查思路。只有這樣才能快速定位真正原因。

相關新聞

Day 024|條件路由:讓 Agent 根據結果選擇下一步

Day 024|條件路由:讓 Agent 根據結果選擇下一步

系列:100 天系統學習 AI Agent 開發 當前階段:LangChain 與 LangGraph 工程化 今日目標:條件路由可以根據工具結果、置信度、用戶權限或錯誤類型決定流程分支。真正讓流程像 Agent 的,不是節點,而是岔路口 檢索到充分證…

2026/7/30 13:18:33 閱讀更多
C++終端游戲實戰:用Dijkstra算法實現AI尋路與路徑規劃

C++終端游戲實戰:用Dijkstra算法實現AI尋路與路徑規劃

1. 項目概述:為什么要在終端里用C寫游戲?很多朋友一聽到“游戲開發”,腦海里浮現的可能是Unity、Unreal Engine這些龐然大物,或者是用Python的Pygame庫快速搭個圖形界面。但今天我想聊點不一樣的:用最純粹的C/C&#x…

2026/8/2 5:34:58 閱讀更多
Pandas DataFrame索引重塑:從混亂數據到高效查詢的完整指南

Pandas DataFrame索引重塑:從混亂數據到高效查詢的完整指南

1. 項目概述:重新定義DataFrame的“坐標軸”在數據分析的日常里,我們最常打交道的對象就是pandas.DataFrame。你可以把它想象成一個功能超級強大的電子表格,行和列構成了它的基本骨架。但很多時候,我們拿到的原始數據并不“乖巧”…

2026/8/2 5:34:58 閱讀更多
Grove錄音模塊工程化應用:從ISD1820P原理到抗干擾設計實戰

Grove錄音模塊工程化應用:從ISD1820P原理到抗干擾設計實戰

1. 從“能錄”到“錄好”:Grove錄音模塊的工程化思考在嵌入式項目里,給設備加上“錄音”功能,聽起來是個挺酷的點子。你可能想做個會說話的智能門鈴、一個能記錄環境聲音的監測節點,或者一個簡單的語音留言機。市面上能實現錄音的…

2026/8/2 5:34:58 閱讀更多
高并發下腳本資源優化四策

高并發下腳本資源優化四策

針對高并發場景優化該壓力測試腳本的資源占用,核心在于引入資源隔離、異步執行、緩存復用和并發控制四大策略。以下是具體優化方案: 1. 容器化部署與資源限制 將腳本封裝為容器,通過資源配額防止單實例過載,并支持水平擴展。 #…

2026/8/2 5:34:58 閱讀更多
Spark Streaming核心原理與實戰:從微批次到實時計算架構

Spark Streaming核心原理與實戰:從微批次到實時計算架構

1. 從批處理到流處理:為什么Spark Streaming是實時計算的“定海神針”如果你用過Spark做批處理,那你一定體驗過它處理海量離線數據時那種“力大磚飛”的快感。但數據世界不是靜止的,業務對時效性的要求越來越高,報表從T1變成小時級…

2026/8/2 5:24:58 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業用三相異步電機,適用于自動化設備及通用機械驅動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/2 2:52:49 閱讀更多