APC有时会重新启动


APC restarts sometimes

安装APC后,请参阅APC.php脚本,正常运行时间每一两个小时重新启动一次?为什么?我该怎么改?

我设置了apc.gc_ttl = 0

APC缓存的寿命与它们的托管进程一样长,这可能是因为你的apache工作人员达到了他们的MaxConnectionsPerChild限制,他们会被杀死并重新获得许可,用它清除缓存。这是一种防止进程泄漏的安全机制。

  • mod_php:MaxConnectionsPerChild
  • mod_fcgid或其他fastcgi:FcgidMaxRequestsPerProcess和PHP_FCGI_MAX_REQUESTS(环境变量,示例适用于lighttpd,但应在使用php -b的任何地方都考虑它)
  • php-fpm:pm.max_为每个池单独请求

您可以尝试将正在使用的选项设置为"无关紧要"的值(通常为0),并使用简单的hello-world php脚本和apachebench ab2 -n 10000 -c 10 http://localhost/hello.php(根据需要调整值)运行测试设置,以查看工作pid是否正在更改。

如果使用TTL为0,则当内存耗尽时,APC将清除所有缓存插槽。这是每2小时追加的内容。

TTL决不能设置为0

只需阅读手册即可了解TTL的使用方法:http://www.php.net/manual/en/apc.configuration.php#ini.apc.ttl

从中使用apc.phphttp://pecl.php.net/get/APC,将其复制到您的Web服务器以检查内存使用情况。

你必须允许足够的内存,这样APC在运行几个小时后有20%的可用空间。定期检查。若并没有足够的可用内存,请使用过滤器选项来防止缓存很少访问的文件。

查看我的答案是什么导致了";无法为池"分配内存;在PHP中?

我今天遇到了同样的问题,在这里找到了解决方案:http://www.itofy.com/linux/cpanel/apc-cache-reset-every-2-hours/

您需要转到AccesWHM > Apache Configuration > Piped Log ConfigurationEnable Piped Apache Logs