0

如果我 kill -QUIT 主资源管理器进程,它会重新启动然后正常运行。但是,如果我杀死 -ABRT 主资源管理器进程,它会重新启动,但 HAWQ 上的进程会重新启动。那么HAWQ是如何处理不同的kill信号的呢?

4

4 回答 4

2

postmaster 启动了多个进程
1. Resource Manager
2. master logger 进程
3. stats collector 进程
4. writer 进程
5. checkpoint 进程
6. seqserver 进程
7. WAL Send Server 进程
8. DFS Metadata Cache Process。

对于 SIGNAL 响应,不同的进程有不同的处理。

  1. master logger进程独立于其他进程,其他进程重启不会影响它,它的重启也不会影响其他进程。对于 SIGQUIT,它将忽略。对于 SIGABORT 和 SIGKILL,它将重新启动。

  2. stats collector 进程不影响其他进程,但会受到其他进程重启的影响。对于信号 SIGQUIT、SIGABORT 或 SIGKILL,它将自行重启。

  3. 资源管理器进程,对于信号 SIGQUIT,它会重新启动自己,对于信号 SIGABORT 和 SIGKILL,它将重新启动所有其他子进程。

  4. 其他 5 个进程,对于信号 SIGQUIT、SIGABORT 或 SIGKILL,将重新启动自身和除主记录器进程之外的所有其他子进程。

于 2016-07-12T10:19:00.557 回答
1

HAWQ 资源管理器捕获信号 SIGQUIT,并注册一个名为 quitResManager 的函数来处理该信号。该过程将和平退出。但是对于信号SIGABRT,资源管理器会根据SIGABORT的定义生成coredump。

由于Resource manager进程是postmaster fork的,所以postmaster进程会密切关注自己的子进程,如果发现子进程正常退出,会自己重启子进程,如果发现子进程有错误,会重启所有子进程。

所以你可以看到资源管理器进程本身在你发送 kill -QUIT 后重新启动,但看到 HAWQ 主服务器上的所有进程在你发送 kill -ABORT 后都重新启动。

于 2016-07-11T10:11:32.803 回答
0

我想知道如果hawq资源管理器进程被SIGKILL杀死,父postmaster进程是否也会退出?

于 2016-07-14T05:14:38.730 回答
0

@huan,如果任何子进程遇到错误,父 postmaster 将不会重新启动。但是如果自己遇到错误,它不会重新启动任何人,所有的子进程都会被杀死。

于 2016-07-21T01:49:19.353 回答