APC 文件缓存无法正常工作,出现内部服务器错误 500

APC 文件缓存无法正常工作,出现内部服务器错误 500

我在 APC 正常工作方面遇到了一些问题。文件缓存始终显示命中数 = 1,未命中数不断增加,但与此同时,缓存的文件条目在一段时间内显示数百个数字。用户缓存条目似乎正常工作。但几乎每天两次,我都会收到内部服务器错误,然后不得不重新启动 php-fpm。我分配了 1024M 内存和一些其他常规配置。如果您有更多想法,我可以给您的电子邮件 ID 来讨论这个问题并向您发送有关它的更多详细信息吗?

APC 配置如下。我尝试了非零 ttls 和其他选项。此外,在 FastCGI 配置中 - 我尝试将 PHP_FCGI_CHILDREN 设置为“0”和其他值。我已将 PHP_FCGI_MAX_REQUESTS (12000) 设置为大于 FcgidMaxRequestsPerProcess 值 (8000),正如我在本文中发现的那样,http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

但内部服务器错误仍然几乎每天发生两次,我不得不重新启动 PHP-FPM

APC配置如下:

apc.cache_by_default    1
apc.canonicalize    1
apc.coredump_unmap  0
apc.enable_cli  0
apc.enabled 1
apc.file_md5    0
apc.file_update_protection  2
apc.filters 
apc.gc_ttl  3600
apc.include_once_override   1
apc.lazy_classes    00
apc.lazy_functions  0
apc.max_file_size   4M
apc.mmap_file_mask  /tmp/apc.mXJeFR
apc.num_files_hint  10000
apc.preload_path    
apc.report_autofilter   0
apc.rfc1867 0
apc.rfc1867_freq    0
apc.rfc1867_name    APC_UPLOAD_PROGRESS
apc.rfc1867_prefix  upload_
apc.rfc1867_ttl 3600
apc.serializer  default
apc.shm_segments    1
apc.shm_size    1024M
apc.shm_strings_buffer  4M
apc.slam_defense    1
apc.stat    1
apc.stat_ctime  0
apc.ttl 0
apc.use_request_time    1
apc.user_entries_hint   4096
apc.user_ttl    0
apc.write_lock  1

PHP.FastCGI配置如下:

#!/bin/bash
PHPRC="/etc/php.ini"
PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=12000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php-cgi

答案1

我认为清除缓存是解决此问题的另一种方法。要么重新启动 apache 服务,要么添加 apc.php 文件之类的内容,并设置 cron 以根据需要在特定间隔后清除它。

或者

如果您有有效的 open_dir 限制或者如果这是在用户帐户上,您必须使用适当的权限设置相对于用户主目录的 APC 的 tmp 目录。

答案2

只是为了社区的利益——这是一个独特的事情,它给我带来了严重困扰,在我对这个问题的广泛搜索中,我没有发现任何关于这种情况的例子被问到或回答过。

频繁出现内部服务器错误的原因是 - 在迁移使用 APC 缓存的新电子商务网站之前,我的服务器上安装了 PHP 5.4.27 和 Zend Opcache。这导致某处发生冲突并引发内部服务器错误。

删除 Zend Opcache 后,另一个因素是 apc.include_once_override 被设置为“1”。这导致页面失真,我曾在某处读到过这方面的内容,因此能够立即指出并设置为“0”。

现在它运行良好,非常顺畅!经过一个月的斗争,我感觉如释重负。

相关内容