我在 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”。
现在它运行良好,非常顺畅!经过一个月的斗争,我感觉如释重负。