apache“等待”30秒后再发送某些页面的回复

apache“等待”30秒后再发送某些页面的回复

我使用 raspberry pi 来托管一些 web 服务(例如 owncloud 或 gitlist)。最近我添加了 tiny tiny rss,一切都运行良好,除了 apache 等待 30 秒发送 php 页面的回复,我在页面加载期间查看了 top,是 apache 占用了 CPU,而不是 php。而且它只对 ttrss(tiny tiny rss)这样做,owncloud 很好,因为我安装了 php-ac。

apache 的 access.log 直到 30 秒才显示任何内容。

在error.log中,我有:

[Sun Mar 17 10:23:17 2013] [error] [client 192.168.0.12] PHP Strict Standards:  Declaration of SanitizeDummy::sanitize() should be compatible with SimplePie_Sanitize::sanitize($data, $type, $base = '') in /var/www/ttrss/include/functions.php on line 14, referer: http://pi.local/ttrss/index.php

每次我加载 index.php 页面时,都会在 30 秒后显示错误并挂起(几乎所有内容都加载完毕)。

它只对 index.php 和 prefs.php 执行该操作(并且仅当用户登录时,对于登录页面来说它很快)

ttrss 页面讨论了 php-ac,但是我没有注意到它有任何变化。

这是配置问题吗?我不认为错误消息与此有关,但也许我错了

(我已经在 raspberrypi.stackexchange.com 上询问过了,但他们告诉我在这里可能有更多的机会)

答案1

我确信会发生这种情况,因为:

  • 您配置了 tt-rss 来在页面打开时更新提要(config.php 中的 SIMPLE_UPDATE_MODE 参数)。
  • 您有一堆提要,而 tt-rss 正在尝试在加载时更新它们,但 Apache 超时了,因为您的 Raspberry 缺乏 CPU 能力,无法在 30 秒内完成所有操作,而这是 PHP 执行时间限制。

如果是这种情况,我建议您执行以下操作:

  • 将您的配置更改为:
    • ‘简单更新模式’,false
  • 在 cron 作业中运行你的 feeds 更新(我在 Debian 和 www-data 下有这个,请根据你的具体情况进行调整):

    */15 * * * * cd /usr/share/tt-rss/www && /usr/bin/php update.php -feeds > /dev/null

我更喜欢让错误信息暴露出来以便发现问题。如果您使用最新版本(撰写本文时为 1.7.4),您将收到您在问题中粘贴的 Sanitize 错误。它与 update.php 脚本有关,但除此之外是假的;修复它的补丁是https://github.com/gothfox/Tiny-Tiny-RSS/commit/3fd035f5eb56c96b163d99503ae20f79691a4e75

有关在 tt-rss 中更新 feed 的更多信息:http://tt-rss.org/redmine/projects/tt-rss/wiki/UpdatingFeeds

免责声明:我不喜欢 update_daemon2.php 方法,因为进程可能会死掉,而且没有人会告诉你,所以你需要通过 daemontools 或类似工具来运行它,以确保它始终处于运行状态。此外,如果你更新代码,你需要停止它以重新加载新代码。

我希望它有帮助。

相关内容