【发布时间】:2015-11-22 15:06:04
【问题描述】:
我们使用启用了 opcache 的 Apache 和 php-fpm 运行生产服务器。目前opcache已经配置了1024MB的可用内存上限。
但是,当我最近分析服务器和 opcache 时,我注意到 FPM/opache 使用的实际内存与操作系统实际使用的内存之间存在明显差异。
分析 opcache,它告诉我目前它使用了大约 850MB 的内存,缓存了大约 8000 个脚本。但是,htop 告诉我当前进程只使用了大约 600MB 的 RAM,其中 FPM 占用了大约 150MB。
我只能假设这意味着 opcache 将缓存的脚本存储在磁盘上而不是 RAM 上。但是,由于性能对我们很重要,而且我们有空闲的 RAM,有没有什么办法可以强制 opcache 将其所有缓存的脚本存储在 RAM 中?
【问题讨论】:
-
您认为您的脚本需要超过 150MB 左右吗?
-
我希望它们都保存在内存中。我们正在运行一个专用的分片,它有足够多的空闲内存。
-
Opcache 仅使用 ram 来缓存脚本 由于 opcache 将编译后的操作码存储在内存中,因此内存结果会因分析器而异。只需添加 - 您可以检查其他配置,例如禁用文件戳检查它会减少几毫秒。
-
我已经禁用了时间戳检查和其他面向开发的设置,因为这是一个生产服务器。正如我在问题中提到的,opcache 根本不可能在内存中缓存,除非它或操作系统报告错误的内存使用情况。
-
你是如何分析 opcache 的?
标签: php caching memory opcache