1

我有一个在 Nginx、PHP-FPM、Varnish 和 APC 设置上运行的 Magento。

APC 的碎片和清除率都很高。

碎片化在 2 小时内增加 >50% 并慢慢达到 100%。

更令人不安的是,Munin 表明净化率几乎始终保持在 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
4

1 回答 1

1

我发现有效保持 APC 正常的一个技巧是设置gc_ttl为 600,就像您一样,但保持ttl为 0。这效率较低,理论上可能会在非常繁忙的站点上导致踩踏,但它可以阻止碎片的积累。您还需要通过确保没有在缓存中放置太多东西(即为其分配足够的内存)来降低清除率。

这听起来可能违反直觉,但是当我今天在服务器上切换到这种方法时,发生了以下情况:

缓存命中率 碎片化 吹扫率

这个 munin 插件非常适合监控 APC 随时间的变化,比试图破译 apc 状态页面要好得多。

于 2013-07-10T17:11:01.237 回答