NiFiBootstrap如何判断NiFi不是运行?
How does NiFi Bootstrap determine if NiFi is not running?
我发现 NiFi 偶尔会重启。在 nifi-app.log 中没有错误指示。 NiFi 没有处理任何数据,此时服务器不忙。当我在 nifi-bootstrap.log 中看到时,我看到
2021-06-17 16:44:00,551 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:00,551 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.lock
2021-06-17 16:44:00,551 WARN [main] org.apache.nifi.bootstrap.RunNiFi Apache NiFi appears to have died. Restarting...
2021-06-17 16:44:00,552 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:00,555 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Saved Pid 17260 to /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:00,555 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:00,557 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Saved Properties {pid=17260} to /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:00,557 INFO [main] org.apache.nifi.bootstrap.Command Launched Apache NiFi with Process ID 17260
2021-06-17 16:44:00,558 INFO [main] org.apache.nifi.bootstrap.RunNiFi Successfully started Apache NiFi with PID 17260
2021-06-17 16:44:01,128 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:01,128 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:01,131 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Saved Pid 17260 to /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:01,131 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
我的问题是; bootstrap 进程如何确定“NiFi 似乎已经死亡”?它是否在寻找 nifi.pid 和 nifi.status 文件的存在?如果是这样,它多久检查一次?这是可配置的吗?
根据源代码 nifi-bootstrap 通过检查进程是否有可用的退出代码来每秒(不可配置)检查主进程是否处于活动状态。
while (true) {
final boolean alive = isAlive(process);
if (alive) {
try {
Thread.sleep(1000L);
} catch (final InterruptedException ie) {
}
} else {
... restart process ...
public static boolean isAlive(final Process process) {
try {
process.exitValue();
return false;
} catch (final IllegalStateException | IllegalThreadStateException itse) {
return true;
}
}
听起来你的主要 nifi 进程由于某种原因停止了......检查服务器上可用的 RAM 和 bootstrap.conf
中的 -Xms
& -Xmx
参数 - 通常这是主要原因。
我发现 NiFi 偶尔会重启。在 nifi-app.log 中没有错误指示。 NiFi 没有处理任何数据,此时服务器不忙。当我在 nifi-bootstrap.log 中看到时,我看到
2021-06-17 16:44:00,551 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:00,551 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.lock
2021-06-17 16:44:00,551 WARN [main] org.apache.nifi.bootstrap.RunNiFi Apache NiFi appears to have died. Restarting...
2021-06-17 16:44:00,552 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:00,555 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Saved Pid 17260 to /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:00,555 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:00,557 DEBUG [main] org.apache.nifi.bootstrap.RunNiFi Saved Properties {pid=17260} to /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:00,557 INFO [main] org.apache.nifi.bootstrap.Command Launched Apache NiFi with Process ID 17260
2021-06-17 16:44:00,558 INFO [main] org.apache.nifi.bootstrap.RunNiFi Successfully started Apache NiFi with PID 17260
2021-06-17 16:44:01,128 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
2021-06-17 16:44:01,128 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:01,131 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Saved Pid 17260 to /opt/nifi-1.10.0/run/nifi.pid
2021-06-17 16:44:01,131 DEBUG [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Status File: /opt/nifi-1.10.0/run/nifi.status
我的问题是; bootstrap 进程如何确定“NiFi 似乎已经死亡”?它是否在寻找 nifi.pid 和 nifi.status 文件的存在?如果是这样,它多久检查一次?这是可配置的吗?
根据源代码 nifi-bootstrap 通过检查进程是否有可用的退出代码来每秒(不可配置)检查主进程是否处于活动状态。
while (true) {
final boolean alive = isAlive(process);
if (alive) {
try {
Thread.sleep(1000L);
} catch (final InterruptedException ie) {
}
} else {
... restart process ...
public static boolean isAlive(final Process process) {
try {
process.exitValue();
return false;
} catch (final IllegalStateException | IllegalThreadStateException itse) {
return true;
}
}
听起来你的主要 nifi 进程由于某种原因停止了......检查服务器上可用的 RAM 和 bootstrap.conf
中的 -Xms
& -Xmx
参数 - 通常这是主要原因。