覆盤一次服務安裝失敗問題

2022-01-29 07:43:43 字數 2169 閱讀 6318

目錄重啟失敗服務

解決方案

總結記錄一下本週服務改造過程踩坑經歷。近期在做服務改造接入統一配置中心,對一些早期的服務進行公升級,由此帶來了不少問題,好在都在測試環境解決了,平穩上線。

**自動構建後,部署服務啟動失敗。到測試伺服器上手動啟動服務報錯「錯誤1053:服務沒有及時響應啟動或控制請求」,如圖:

修復問題後服務無法重啟,希望能找到乙個不重啟伺服器的方法重新安裝啟動服務。

基本套路還是一樣的,程式設計師的法寶:debug和log。

分析的日誌有三個方面可以參考:服務啟動列印的日誌,系統自帶的事件日誌,命令列啟動日誌。下面逐個分析使用場景和結論。

系統自帶日誌

一般的程式錯誤都會在系統日誌裡面留下痕跡,即使是程式崩潰了,只要系統沒有崩潰都會有記錄。

遺憾的是,本次應用程式錯誤後台只有簡單提示「服務沒有及時響應啟動或控制請求」。無法判斷是否環境問題。

檢視安裝日誌,如圖,沒有找到太多有價值資訊。

服務啟動日誌

如果能走到這步,後台有程式輸出的記錄日誌,一般都是啟動服務進入到程式裡面才報錯的,通過除錯可以快速定位問題。

查詢日誌中心,本次沒有生成新的日誌,開啟除錯開關,本地也沒有生成記錄日誌。可以判斷還沒有走到程式內部。

命令列日誌

如果是某個沒有捕捉到的問題,直接拖到命令列啟動倒是乙個好方法,可以直接從控制台看到某些錯誤資訊。

果然,通過這一步看到了錯誤提示。詳細日誌略過(敏感內容就不貼了。。。),簡單的說就是配置沒有更新,某個依賴項服務沒有註冊導致服務dump。

進一步使用sc命令可以查詢到其實服務是處於star-pending狀態。到此終於可以知道為何啟動不起來了。

接下來我們刪除這個啟動失敗的服務,有兩種處理方式:

installutil.exe /u [fullpath\servicename.exe]sc delete [servicename]

我採用了第一種使用sc命名的方式,得到了如下的結果

然後安裝服務,報1058的錯誤。檢視服務列表,這時候服務還是存在於列表中,只是狀態是禁用。

google了一下,這種情況只需要重啟後繼續安裝就可以。問題來了,伺服器能隨便重啟嗎?不說生產的伺服器,就是測試的伺服器上面也部署了各種服務,幾百號人在開發測試呢。。。總不能等到下班後重啟伺服器吧,找了一下,這種情況就只能刪除登錄檔重新開啟服務列表檢視:

刪除登錄檔項hkey_local_machine\system\currentcontrolset\services\你的服務名

找了一下解除安裝的原理,園子裡這篇windows api 之 windows service讓我了解到:

刪除服務的本質是在登錄檔裡面刪除該服務的登錄檔鍵以及該鍵的子鍵。

標記該服務為可刪除的服務

檢查該服務是否已經停止,並且該牽涉到該服務的所有控制代碼都已經被關閉的時候,再來刪除該服務;

如果該服務一直都在執行狀態,那麼就等到下次機器重啟的時候,來刪除該服務

關鍵點在於:服務所有引用的控制代碼都已經被關閉。

以下幾點可以在系統事件檢視器看到錯誤日誌:

檢查安裝工具installutil.exe版本是否一致

檢查配置檔案startup的.netframework版本是否一致

如果新增服務使用了特別賬戶,檢查是否賦予了分組許可權

以下幾點需要仔細check:

配置檔案是否正確

依賴項是否全部打包正確

任務管理器工具(包括process explorer等)關閉對待刪除服務訪問

服務控制台和mmc均沒有開啟待刪除服務

事件檢視器沒有開啟待刪除服務

visual studio遠端除錯沒有開啟待刪除服務

這其實是乙個典型的研發,測試,運維合作解決問的過程。每個公司的自動化運維構建平台都會有各種不同的規定,例如配置更新問題。

部署的時候需要按照一定的流程,有一張checklist能減少問題發生。

一次小程式專案管理覆盤總結

專案覆盤會議 1 審視目標 2 回顧過程 3 分析得失 4 總結規律 1 專案主流程任務全部投放到乙個人身上 導致要上線的時候,乙個人主流程出現的bug 沒時間改,就會導致 上線風險,而增加的另乙個人,也只能看著。好在 這邊主動承擔了幾個主流程的頁面開發 在專案已排期的情況下,中間排進來另乙個專案,...

覆盤 記錄一次帶專案上線的經歷

這一段時間在忙著帶領專案上線,現在已經整體結束,來復盤一下.先說一下帶領上線的系統 主要是負責某所高校的上機考試,那麼為了保證學生能夠考試,就需要和老師溝通,找老師要題庫,核對題庫,核對考生名單,安排考務等,在這整個過程中的所有事情.學校那邊機考是 6 月 27,28 號和 7 月 5,6,7,8,...

乙個失敗專案的覆盤會

2018年5月份筆者參加了乙個失敗專案的覆盤會,領導開場介紹了這個專案的基本情況,2017年中標某集團十多個省的雲平台安檢專案,公司之前做了好幾年上百個類似的安檢專案,經驗較為豐富,所以在多家廠商競標過程中脫穎而出成功中標。但經過一年多的實施,最終2018年5月以客戶退單告一段落。然後讓專案團隊進行...