APC 正在使用大量内存。在我的服务器上,大约 30 个 Wordpress 和 6 个 Magento 网站,它使用了超过 1GB 的空间,这超过了 PHP 文件的大小。
我认为操作码会比 PHP 文件小。与源代码相比,编译的 JAVA 也是如此。
例如,Magento 的 index.php 在磁盘上是 2571B,在 APC 中使用的是 16560B。
我不使用任何用户缓存。
任何想法 ?
操作码按其所在的路径缓存每个 php 文件。所以这是每个 wordpress PHP 文件 30 x 或每个 Magento PHP 文件 6 x。更不用说您可能正在使用的任何 PEAR 库或其他库。
另外,您在 /etc/php.d/apc.ini 或 php.ini 文件中为允许 APC 的内存设置了什么?
apc.shm_segments=1
apc.shm_size=256
将分段乘以大小,与 APC 一样大将增长。即使您没有真正使用它,它也会立即使用此内存块。检查您的 apc.php 文件以查看实际使用情况。
查看 Wordpress 最近安装的 wordpress,我看到至少 8M 的 php 文件。因此,如果您有 30 个站点都安装了完整的 wordpress 并使用 APC,那么仅此一项(没有任何插件)将是操作码缓存中的大量内容。
通常操作码应该小于文件大小,但你不能确定 100%。例如,在系统缓存选项卡中检查 APC.php,我看到这个文件被缓存:/usr/share/pear/Zend/View/Abstract.php
. 我知道在磁盘上它是 33k,但 APC 报告它正在使用 20K 的内存。如果我在两个位置(如/usr/share/pear/Zend/View/Abstract.php
和/usr/share/pear/Zend2/View/Abstract.php
)有这个文件的 2 个副本,并且在不同的代码块中引用了这两个副本,APC 会缓存每个副本——它认为它们是不同的文件。