2016-07-11 28 views
0

如果我終止-QUIT主資源管理器進程,它將重新啓動,然後正常運行。但是,如果我終止了主資源管理器進程的-ABRT,它將重新啓動,但在HAWQ重啓時進行。那麼HAWQ如何處理不同的殺死信號呢?HAWQ如何處理不同的殺死信號?

+0

它應該是「但是如果我殺了-ABRT主資源管理器進程,它會重啓,但在HAWQ主服務器重啓時進程」。 –

回答

1

HAWQ資源管理器捕獲信號SIGQUIT,並註冊了一個名爲quitResManager來處理信號的功能。這個過程將和平地退出。但對於SIGABRT信號,資源管理器將根據SIGABORT的定義生成coredump。由於資源管理器進程由postmaster分支,postmaster進程會密切關注其子進程,如果發現子進程正常退出,它將重新啓動子進程本身,但如果發現錯誤則會重新啓動所有子進程在子進程中。

所以,你可以看到你發送-QUIT殺後的資源管理過程本身被重新啓動,但看到你發送殺-ABORT後再開始HAWQ主所有進程。

+0

順便說一下,HAWQ資源管理器將爲SIGINT,SIGTERM和SIGUSR2執行類似的SIGQUIT處理。 –

+0

非常感謝。順便說一句,如果我發送一個kill信號給postmaster分叉的進程之一,哪些信號會導致這個進程重啓,哪些信號會導致postmaster進程重啓? –

+0

有多個進程由postmaster啓動:1.資源管理器; 2. master logger –

2

有由postmaster啓動多個進程
1.資源管理器
2.主記錄器進程
3.統計收集器進程
4.寫進程
5.檢查點進程
6. seqserver過程
7. WAL發送服務器進程
8. DFS元數據緩存進程。

對於SIGNAL響應,不同的進程有不同的處理。

  1. 主記錄過程是否獨立於其他進程,其他進程重新啓動不會影響它,它的重啓也不會太影響其他進程。對於SIGQUIT,它會忽略。對於SIGABORT和SIGKILL,它將重新啓動。

  2. 統計收集器進程不會影響其他進程,但會被其他進程的重啓的影響。對於SIGQUIT,SIGABORT或SIGKILL信號,它將自行重啓。

  3. 資源管理過程中,信號SIGQUIT,它會重新啓動本身,SIGABORT信號和SIGKILL,將重新啓動所有其他的子流程。

  4. 另外5個工序,用於信號SIGQUIT,SIGABORT,或SIGKILL,將重新啓動本身和除主記錄器過程中的所有其他的子流程。

+0

殺死-15怎麼樣? –

+0

殺-15是SIGTERM。資源管理器,統計信息收集器和WAL發送服務器進程在遇到kill -15時將自行重新啓動。其他進程忽略信號。 –

0

不知hawq資源管理過程由SIGKILL殺死,是否父郵政局長進程也將退出?

+0

我已經試過這個,發現只有子進程重新啓動並且父母postmaster進程正常運行。 –

0

@huan,如果有子過程符合誤差父postmaster將不會重新啓動。但如果它本身遇到錯誤,它不會重新啓動任何人,所有的子進程都將被終止。