????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.191 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/home/b8009/php-5.6.22/sapi/fpm/fpm/ |
Upload File : |
#include "fpm_config.h"
#include <sys/types.h>
#include <systemd/sd-daemon.h>
#include "fpm.h"
#include "fpm_clock.h"
#include "fpm_worker_pool.h"
#include "fpm_scoreboard.h"
#include "zlog.h"
#include "fpm_systemd.h"
static void fpm_systemd() /* {{{ */
{
static unsigned long int last=0;
struct fpm_worker_pool_s *wp;
unsigned long int requests=0, slow_req=0;
int active=0, idle=0;
for (wp = fpm_worker_all_pools; wp; wp = wp->next) {
if (wp->scoreboard) {
active += wp->scoreboard->active;
idle += wp->scoreboard->idle;
requests += wp->scoreboard->requests;
slow_req += wp->scoreboard->slow_rq;
}
}
/*
zlog(ZLOG_DEBUG, "systemd %s (Processes active:%d, idle:%d, Requests:%lu, slow:%lu, Traffic:%.3greq/sec)",
fpm_global_config.systemd_watchdog ? "watchdog" : "heartbeat",
active, idle, requests, slow_req, ((float)requests - last) * 1000.0 / fpm_global_config.systemd_interval);
*/
if (0 > sd_notifyf(0, "READY=1\n%s"
"STATUS=Processes active: %d, idle: %d, Requests: %lu, slow: %lu, Traffic: %.3greq/sec",
fpm_global_config.systemd_watchdog ? "WATCHDOG=1\n" : "",
active, idle, requests, slow_req, ((float)requests - last) * 1000.0 / fpm_global_config.systemd_interval)) {
zlog(ZLOG_NOTICE, "failed to notify status to systemd");
}
last = requests;
}
/* }}} */
void fpm_systemd_heartbeat(struct fpm_event_s *ev, short which, void *arg) /* {{{ */
{
static struct fpm_event_s heartbeat;
if (fpm_globals.parent_pid != getpid()) {
return; /* sanity check */
}
if (which == FPM_EV_TIMEOUT) {
fpm_systemd();
return;
}
if (0 > sd_notifyf(0, "READY=1\n"
"STATUS=Ready to handle connections\n"
"MAINPID=%lu",
(unsigned long) getpid())) {
zlog(ZLOG_WARNING, "failed to notify start to systemd");
} else {
zlog(ZLOG_DEBUG, "have notify start to systemd");
}
/* first call without setting which to initialize the timer */
if (fpm_global_config.systemd_interval > 0) {
fpm_event_set_timer(&heartbeat, FPM_EV_PERSIST, &fpm_systemd_heartbeat, NULL);
fpm_event_add(&heartbeat, fpm_global_config.systemd_interval);
zlog(ZLOG_NOTICE, "systemd monitor interval set to %dms", fpm_global_config.systemd_interval);
} else {
zlog(ZLOG_NOTICE, "systemd monitor disabled");
}
}
/* }}} */
int fpm_systemd_conf() /* {{{ */
{
char *watchdog;
int interval = 0;
watchdog = getenv("WATCHDOG_USEC");
if (watchdog) {
/* usec to msec, and half the configured delay */
interval = (int)(atol(watchdog) / 2000L);
zlog(ZLOG_DEBUG, "WATCHDOG_USEC=%s, interval=%d", watchdog, interval);
}
if (interval > 1000) {
if (fpm_global_config.systemd_interval > 0) {
zlog(ZLOG_WARNING, "systemd_interval option ignored");
}
zlog(ZLOG_NOTICE, "systemd watchdog configured to %.3gsec", (float)interval / 1000.0);
fpm_global_config.systemd_watchdog = 1;
fpm_global_config.systemd_interval = interval;
} else if (fpm_global_config.systemd_interval < 0) {
/* not set => default value */
fpm_global_config.systemd_interval = FPM_SYSTEMD_DEFAULT_HEARTBEAT;
} else {
/* sec to msec */
fpm_global_config.systemd_interval *= 1000;
}
return 0;
}
/* }}} */