我对PHP APCcaching系统感到沮丧,我想从服务器上完全删除/禁用它。 我在Debian Squeeze上安装Nginx使用PHP,有没有办法做到这一点?
而不是删除APC,这将导致大规模的性能打击,并有效地拍摄自己的脚。
试试这个:在/etc/php5/conf.d/apc.ini中:
extension=apc.so apc.shm_size=128M apc.shm_segments=1 apc.max_file_size=5M apc.num_files_hint=10000 apc.slam_defense = 0 apc.write_lock=1
您可以将apc.shm_size增加到大于128的值,如果有足够的可用RAM,则说明512。
我在运行的服务器上执行了这个操作,从来没有看到无法为池错误分配内存 。
删除/opt/php5/etc/conf.d/apc.ini或注释其中的所有行; 。 之后不要忘记重新启动您的networking服务器。
另外检查'/etc//php5/apache2/php.ini'为'extension = apc.so'来评论。
如果你仍然有来源,你可以尝试做make uninstall之后。 我不知道如果makefile包含这个目标。
如果你没有在Squeeze提供的东西旁边安装某个东西,那么一个简单的apt-get remove php-apc可以做到这一点。
解决方法是增加分配给APC的内存。
使用TTL为0意味着APC将在内存不足时清除所有caching。 错误不再出现,但它使得APC效率远远不够。 这是一个没有风险,没有麻烦,“我不想做我的工作”的决定。 APC并不意味着要这样使用。 您应该select足够高的TTL,以便访问最多的页面不会过期。 最好的是提供足够的内存,以便APC不需要刷新caching。
只需阅读手册了解如何使用ttl: http : //www.php.net/manual/en/apc.configuration.php#ini.apc.ttl
您可以通过增加apc.shm_size来增加分配的内存。
如果APC编译为使用共享段存储器,则您的操作系统将受到限制。 input以下命令查看每个段的系统限制:
sysctl -a | grep -E "shmall|shmmax"
要分配更多的内存,你必须增加参数apc.shm_segments段的数量。
如果APC使用mmap内存,那么你没有任何限制。 内存量仍然由相同的选项apc.shm_size定义。
如果服务器上没有足够的内存,则使用filter选项来防止不经常访问的php文件被caching。
但从不使用0的TTL。
使用apc.php来检查你的configuration。 你会看到什么是真正分配和如何使用。 如果graphics在每次刷新时完全改变,那么图表必须在几个小时后保持稳定,这意味着您的设置是错误的(APC正在冲洗所有内容)。 分配比APC真正用作安全保证金的20%,并定期检查。
只允许32MB的默认值是非常低的。 PHP的devise是当一台服务器是64MB,大多数脚本每页使用一个PHP文件。 如今,像Magento这样的解决scheme需要10k以上的文件(APC约60Mb)。 你应该允许足够的内存,所以大部分的PHP文件总是被caching。 这不是浪费,而是将操作码保存在内存中,而不是在文件caching中保存相应的原始php。 现在我们可以find24Gb内存的专用服务器,价格低至150美元,所以不要犹豫,允许几个GB到APC。 我在24GB的服务器上托pipe了5Magento商店和〜40个wordpress网站,APC使用了1.2GB。 为Magento安装计数64MB,一些WordPress插件20MB。