2013-02-17 122 views
1

我有一个运行在Nginx上的Magento,PHP-FPM,清漆& APC设置。APC清除率和碎片

APC在碎片率和清除率上运行得很好。

2小时内碎片增加> 50%,慢慢降至100%。

更令人不安的是事实和穆宁表明,清除率几乎在100%的所有时间。

我试图将shm大小增加到1G(APC通常使用大约200M的这个,总的RAM是6G),这并没有帮助,也试图调整ttl:s没有任何运气。

清漆中是否有导致APC持续清洗的物质?

这里是我的APC.ini

extension = apc.so 
apc.enabled=1 
apc.shm_segments=1 
apc.shm_size=1024M 
apc.num_files_hint=10000 
apc.user_entries_hint=10000 
apc.max_file_size=5M 
apc.stat=0 
apc.enable_cli = 1 
apc.optimization=0 
apc.cache_by_default=1 
apc.slam_defense=0 
apc.include_once_override=0 
apc.ttl=3600 
apc.user_ttl=7200 
apc.gc_ttl = 600 

apc.php:

**File Cache Information** 
Cached Files 1053 (58.1 MBytes) 
Hits 40172 
Misses 1038 
Request Rate (hits, misses) 102.26 cache requests/second 
Hit Rate 99.68 cache requests/second 
Miss Rate 2.58 cache requests/second 
Insert Rate 10.41 cache requests/second 
Cache full count 0 

**User Cache Information** 
Cached Variables 74 (1.2 MBytes) 
Hits 374 
Misses 5907 
Request Rate (hits, misses) 15.59 cache requests/second 
Hit Rate 0.93 cache requests/second 
Miss Rate 14.66 cache requests/second 
Insert Rate 0.18 cache requests/second 
Cache full count 0 
+0

清漆不应影响APC清洗。通常,查找有关APC的详细信息的最简单方法就是将apc源码一起附带的apc.php文件。如果您在PHP-FPM中执行它,它可以向您显示有关APC内容的详细信息,根据这些信息,您可能会找到为什么有这么多清除的原因。 – 2013-02-17 08:11:26

+0

感谢您的回答。我一直试图从apc.php中找出原因,但没有任何运气。我粘贴上面的apc.php详细信息。 – 2013-02-17 17:46:31

+0

我会增加你的'apc.ttl'并降低你的'apc.user_ttl'。如果你在'php-fpm'中设置了'pm.max_requests',它也会影响到这一点。这是因为当进程达到最大请求限制并且进程终止时,该进程的缓存将被丢弃。这反过来又造成了碎片化。 – nojak 2013-03-20 22:22:14

回答

1

一招,我在保持APC理智是设置gc_ttl到600,你有发现有效,但保持ttl为0.这效率较低,理论上可能导致非常繁忙的网站发生踩踏事件,但它会阻止碎片堆积。你还需要保持清除速度,确保你没有在缓存中放置太多东西(即分配足够的内存)。

这听起来可能有悖常理,但这里的时候我开通了这种方法在服务器上发生的事情:

Cache hit ratio Fragmentation Purge rate

This munin plug-in是伟大的监测APC如何随时间变化,更好的比试图破译apc状态页面。