• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    php-cgi进程cpu负载过高:禁用wordpress定时任务wp-cron.php

    发布者: Error | 发布时间: 2025-6-19 12:05| 查看数: 102| 评论数: 0|帖子模式

    一、问题描述
    1、19号手动升级到wordpress4.1,21号早上7点看网站php探针,发现系统负载过高,差不多在1到1.5之间。
    2、虽然对于双核处理器,这个值还可以接受,但是之间负载都只有0.2左右,而网站流量又没有突然增加很多,所以推定肯定是出问题了。
    3、eth 外网流量正常,lo 本地流量增长很快,reboot系统后(之间服务器已经稳定运行了632天9小时25分钟),1个小时不到就有了1G的流量。
    4、top命令发现php-cgi 占用cpu很多,大部分时间都在80%到90%之间,cpu time+ 时间很长。
    二、解决方法
    1、百度搜索:php cgi cpu找到文章
    2、修改php-fpm.conf
    request_terminate_timeout 0s 改为30s
    request_slowlog_timeout 0s 改为3s
    重启php-fpm:/usr/local/php/sbin/php-fpm restart
    3、查看slow.log发现,每一个统计时间点里都有如下提示
    script_filename = /网站路径/wp-cron.php
    [0xbfcaa950] do_action_ref_array() /网站路径/wp-cron.php
    4、想到可能和wp-cron.php有关,于是百度搜索:wp-cron.php找到:
    5、于是找到php-cgi进程占用cpu资源导致服务器负载过高的解决方法:禁用WP-Cron
    编辑wordpress wp-config.php,加入:define(‘DISABLE_WP_CRON’, true);
    然后 /root/lnmp restart 重启lnmp
    重启之后cpu 占用终于正常,网站负载也减了下来,slow.log 也不再增加新的内容
    三、排除可能的原因
    1、禁用hyper cache
    开始觉得可能hyper cache生成的缓存文件过多引起php负载,禁用hyper cache插件后发现负载非但不降,反而升了,说明:不是hyper cache的问题且hyper cache可以起到降低php负载的作用。
    2、删除eAccelerator
    依据这篇文章提醒:vi /usr/local/php/etc/php.ini 删除文件末尾Accelerator的那几行配置删掉,保存重启lnmp,发现问题依旧,所以也排除了eAccelerator的原因,之后再重新在php.ini中添加上eAccelerator的配置。
    3、file_get_contents的问题
    参考上边两篇文章,ll /proc/PID/fd 没有发现异常。
    yum install strace 安装(不安装会提示错误:-bash: strace: command not found) 后
    strace -p pid,有类似的提示错误:poll([{fd=4, events=POLLIN}], 1, 0) = 0 (Timeout)
    页面不停的闪动,服务器负载骤增。
    两篇文章中提到的:stream_context_create 设置超时时间,技术太差,完全看不懂要如何操作,所以也没办法向下进行,放弃。
    4、php5.2 和curl的兼容问题
    解决方法:设置curl超时时间
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);
    也不知如何操作,放弃。

    来源:https://zhuji.jb51.net/wordpress/7861.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表