2012-02-14 93 views
2

我有一個關鍵的Windows服務,我需要我的Web應用程序。Windows服務「開始」

不幸的是,Windows服務無法正常啓動,但仍處於「啓動」狀態約7分38秒,然後失敗。

當服務處於「啓動」模式時,我的web應用程序正常工作。

我有一個Windows計劃任務,每分鐘運行一次以在必要時重新啓動服務。

net start "my service" 

因此,存在的約22秒內從時,直到它再次啓動的服務失敗的間隙。另外,我的應用程序(取決於此服務)還需要30秒左右才能開始工作。

我故意沒有命名錯誤的服務。我確實打開了一個單獨的問題https://stackoverflow.com/questions/8470975/oracle-oc4j-service-keeps-stopping,其目的是爲了真正解決問題。

在這個問題中,我不是試圖解決問題,而是找到一種解決方法來嘗試並保持此服務處於「開始」整個時間的狀態。

什麼是令人憤怒的是,直到我今天重新啓動服務器,我每3分鐘重新啓動服務的解決方法實際上工作,沒有任何應用程序停機時間。

有沒有人有任何建議?我嘗試將ServicesPipeTimeout的註冊表項更改爲86400000(24小時!),以使服務保持「啓動」狀態的時間更長。

+0

服務應該是在運行狀態,而比開始。開始是一個過渡狀態[(有關MSDN的更多信息)](http://msdn.microsoft.com/en-us/library/windows/desktop/ee126211(v = vs.85).aspx)。 – 2012-02-14 21:29:30

+0

謝謝謝瓦蒂托夫。我承認這不是最佳狀態,但即使在「啓動」模式下,應用程序也能正常工作。 (順便說一句,我認爲你的意思是「開始」而不是「正在運行」。) – gordon613 2012-02-15 11:52:40

+0

'sc query '報告正在運行以啓動服務。但是名字並不重要。在啓動狀態下服務不能很長時間,SCM最終會終止。 – 2012-02-16 03:03:01

回答

4

我發現了一個可能的解決我的問題,我對很不安......

我下載的WinDbg從http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279

我打開WinDbg中並沒有附加到進程,並選擇我的服務。

只要WinDbg處於打開狀態,它似乎「持有」進程並阻止進程停止。

多久繼續這樣做,還有待觀察,但它已經在半小時舉行,現在(分別爲8分鐘後服務之前停止)

+2

這個解決方案持續了近一年,直到我進行了整個系統升級! – gordon613 2013-02-10 17:04:04

+1

Upvoted只是爲了更新一年後的人們! ;) – FrostbiteXIII 2015-06-08 12:47:43

3

如果您將超時設置爲24小時,且服務未啓動或處於「啓動」模式,則它必須崩潰或關閉。

如果您想嘗試立即重新啓動服務,它會崩潰,然後在服務的屬性上選擇「恢復」選項卡。您應該能夠將服務設置爲在第一次,第二次和隨後出現的故障時重新啓動,並將服務設置爲在0分鐘後重新啓動,

請注意,如果Windows認爲服務正常關閉,則此功能無效。

不言而喻,如果您無法獲得編寫服務來解決問題的人,這是最後的選擇。

+0

嗨Sgmoore。感謝您對Restart的建議。這不起作用(大概是因爲你寫的服務沒有正常關閉 - 或者在我的情況下,從未正常啓動) – gordon613 2012-02-15 11:57:46

+0

實際上,如果服務沒有正確關閉,**應該* *立即重啓。如果它正確關閉,那麼它會假定服務正在故意關閉並且不會重新啓動。如果服務是'開始',那麼他們應該不需要重新啓動它。 – sgmoore 2012-02-15 14:36:29

+0

應該指出,爲了防止誤解我,這不是爲了使服務正常啓動或保持啓動,而僅僅是在崩潰後立即重啓。不幸的是,沒有任何魔法按鈕或設置可以使一個錯誤的程序停止崩潰,這就是爲什麼你需要讓編寫服務的人來看看問題。 – sgmoore 2012-02-15 14:42:35

1

嘗試在「恢復」選項卡上爲所有三個部分指定「重新啓動服務」,但只有在服務異常結束時纔會起作用。

我們公司面臨類似的問題,我們開發了Service Protector,一個商業應用程序,可以保姆服務,並保持24/7運行。它也可能適用於你的情況。

+0

謝謝CoreTech。我目前正在嘗試Service Protector。 (順便說一句,我向你的公司發送了關於此的重要反饋,請讓我知道如果你沒有得到它。)[重新啓動服務恢復選項卡上沒有工作] Service Protector確實立即重新啓動服務(這是一個優勢在我的腳本上只檢查每分鐘),但是我的應用程序在服務重新啓動的那幾秒鐘內,所以我理想地希望阻止服務停止而不是立即重新啓動它。 – gordon613 2012-02-15 11:54:35