17

这是我的 APC 运行方式的链接:[已删除]

正如你所看到的,它很快就被填满了,我的 Cache Full Count 有时会超过 1000

我的网站使用 Wordpress。

我注意到每次我发布新帖子或编辑帖子时,都会发生两件事。

1) APC 内存“已使用”重置 2) 我得到了很多碎片

我尝试为 APC (512 mb) 提供更多内存,但有时它会崩溃,似乎 384 是最好的。我还有一个 Cron 作业,它每 4 小时重新启动 apache,清除所有 APC 的碎片和已用内存。同样,如果 APC 长时间运行,我的 apache 会崩溃,我认为是由于碎片堆积。

我应该使用 apc.Filters 并过滤掉一些不应该被缓存的东西吗?

我真的是这类东西的初学者,所以如果有人能用完整的说明解释,非常感谢!!!

4

3 回答 3

41

我是一名 Linux 系统管理员,wordpress 服务器运行 5 种不同的 WordPress 安装。如果您只运行一个,我将评论要考虑的配置。

APC / PHP 版本,3.1.9 / 5.3.7

这是我完整的 apc.conf,

apc.enabled=1
apc.shm_segments=1

; I would try 32M per WP install, go from there
apc.shm_size=128M

; Relative to approx cached PHP files,
apc.num_files_hint=512

; Relative to approx WP size W/ APC Object Cache Backend, 
apc.user_entries_hint=4096

apc.ttl=7200
apc.use_request_time=1
apc.user_ttl=7200
apc.gc_ttl=3600
apc.cache_by_default=1
apc.filters
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.file_update_protection=2
apc.enable_cli=0
apc.max_file_size=2M

;This should be used when you are finished with PHP file changes.
;As you must clear the APC cache to recompile already cached files.
;If you are still developing, set this to 1.
apc.stat=0

apc.stat_ctime=0
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600

;This MUST be 0, WP can have errors otherwise!
apc.include_once_override=0

apc.lazy_classes=0
apc.lazy_functions=0
apc.coredump_unmap=0
apc.file_md5=0
apc.preload_path

@Chris_O,您的配置在某些方面不是最佳的。

1. apc.shm_segments=3

如果您运行现代 Linux 发行版,您的 SHM 应该足够大。如果太小搜索如何设置 sysctl.conf 条目,您可以像这样检查。

#Check Max Segment size
cat /proc/sys/kernel/shmmax

在某些 BSD 或其他 Unix 或您无法控制的托管主机上运行时出现异常。没有连续段有缺点,请阅读 APC 的详细信息以获取该信息。

2. apc.enable_cli=1

BAD BAD BAD,这仅用于调试!每次运行 php-cli 时,它都会清除 APC 缓存。

3. apc.max_file_size=10M

不必要的和荒谬的!如果你有一个那么大的文件,它会吃掉那个小 32M SHM 的 1/3。即使您指定了 3,它们也不会像三个部分中的一个大段。不管 WP 甚至没有接近那个大小的单个 PHP 文件。

'希望我对他们的 apc.conf 有所帮助。

于 2011-08-26T16:08:02.810 回答
10

APC ttl 应该负责片段的构建。我通常将其设置为 7200。我在带有 WordPress 的小型 VPS 上运行它,我的设置是:

apc.enabled=1
apc.shm_segments=3
apc.shm_size=32
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=2048
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.max_file_size=10M

通过使用 WordPress 的内置对象缓存,您还将从中获得更多好处,Mark Jaquith 编写了一个非常好的插件,在保存或编辑帖子时也应该有助于解决一些碎片问题。

于 2010-09-19T00:33:58.510 回答
1

你真的应该在你的生产服务器上设置 apc.stat=0 ,它会阻止 APC 实际进入 IO 来检查文件是否已更改。

首先查看文档:http: //php.net/manual/en/apc.configuration.php

于 2010-10-17T14:35:15.877 回答