常见问题

查看日志

如果系统工作不正常或者没有数据,通常可以从日志里获取更多的信息来定位问题。

汇总进程日志: /opt/tingyun-php/logs/daemon.log

PHP扩展日志: /opt/tingyun-php/logs/php-agent.log

运行:

ll /opt/tingyun-php/logs

正常情况下会存在2个日志( daemon.log 和php-agent.log)。

  • 如果php-agent.log不存在说明PHP扩展有问题,请检查PHP扩展模块。

  • 如果daemon.log不存在说明汇总进程有问题,请检查汇总进程。

如果2个日志都存在说明安装没有问题,请运行:

grep -E 'CRITICAL|ERROR|error' /opt/tingyun-php/logsh/php-agent.log

如果php-agent输出有ERROR信息,说明PHP扩展运行时有错误。

grep -E 'CRITICAL|ERROR|error' /opt/tingyun-php/logs/daemon.log

如果daemon输出有ERROR信息,说明可能和服务器通信有问题。

默认情况,日志级别为info, 审计模式是关闭的,这种情况得到的信息量比较小。 通过修改日志级别为debug,开启审计模式,让汇总进程和php扩展输出更多日志信息,通过日志得到的信息定位问题。

检查PHP扩展模块

  1. 将info.php放在网站某个目录下。

    echo "<?php phpinfo(); ?>" > /path/to/info.php
    
  2. 通过浏览器访问info.php。

  3. 查找页面内是否存在tingyun扩展。

    正常情况下的信息和以下截图类似:

  4. 若没有tingyun模块信息,请重新安装扩展模块。

    重新安装后,如果仍未出现tingyun模块信息,则很有可能您的PHP版本不符合安装条件。

检查汇总进程

  1. 确认汇总进程文件是否存在。

    ll /opt/tingyun-php/bin/php-daemon
    

    如果 /opt/tingyun-php/bin/php-daemon 不存在,说明被误删了,请重新安装探针。

  2. 确认汇总进程在运行。

    ps -e | grep php-daemon
    

    正常情况下的信息和以下截图类似:

    如果php-daemon进程不存在,请重启Web Server。

    sudo service httpd restart
    

    sudo service php-fpm restart
    

    然后再次运行 ps -e | grep php-daemon,查看输出结果。

php-agent日志错误处理:

  1. 当出现大量 Resource temporarily unavailable 错误时,例如
ERROR: connect socket /opt/tingyun-oneagent/run/daemon.sock fail: Resource temporarily unavailable

可能是服务器设置的ulimit数量不足造成php扩展和daemon进程通讯出现问题,因为每个php-fpm的worker都会和daemon进程打开一个文件句柄进行通讯,当php-fpm的worker数量超过ulimit -n的数量时,会造成文件句柄超过限制而通讯失败。

问题确认:

普通探针使用 ps -ef | grep php-daemon 确认daemon进程的pid

tingyunagent探针使用 ps -ef | grep transagent 确认daemon进程的pid

查看daemon进程的pid对应的limits中 Max open files限制

cat /proc/[pid]/limits

查看daemon进程实际打开文件数

ls /proc/[pid]/fd | wc -l

如果实际打开文件数已经接近limits中 Max open files限制,需调整limits限制

普通探针:

kill daemon进程 killall php-daemon

打开 PHP-FPM 的配置文件。通常该文件位于 /etc/php-fpm.conf 或 /etc/php-fpm.d/www.conf。

在配置文件中找到 rlimit_files 的行,如果找不到该行,则需要添加该行。该行的格式如下: rlimit_files = <soft limit>:<hard limit>

其中, 表示软限制值, 表示硬限制值。软限制值表示允许的最大文件描述符数量,硬限制值表示操作系统允许的最大文件描述符数量。

修改 的值。例如,如果您想将软限制值设置为 65535,硬限制值设置为 65535,则应将 rlimit_files 行修改为:rlimit_files = 65535:65535

保存文件并重新启动 PHP-FPM 服务

tingyunagent探针:

vi /opt/tingyun-oneagent/bin/cpphostdaemon

在start方法后添加ulimit -n,例如:

start() {
    ulimit -n 100000
    if [ -f "${AGENT_PATH}/cpp_version" ]; then
        local version="$(cat ${AGENT_PATH}/cpp_version)"
        local daemon=${AGENT_PATH}/cpp_${version}/bin/transagent
        if [ -f "${daemon}" ]; then
            echo "start ${daemon}"
            export PHP_DAEMON_CONFIG="${CONF_PATH}/oneagent.conf:${CONF_PATH}/php.conf"
            ${daemon} -d -p "${RUN_PATH}/daemon.pid"
        else
            echo "Error: can not find ${daemon}"
        fi
    else
        echo "Error: can not find ${AGENT_PATH}/cpp_version"
    fi
}

然后重启服务

sudo systemctl restart tingyun-oneagent

results matching ""

    No results matching ""