Php 是否可以强制opcache将缓存的脚本保留在内存中?
我们使用Apache和启用了opcache的php fpm运行生产服务器。目前,opcache的可用内存上限为1024MB 然而,当我最近分析服务器和opcache时,我注意到FPM/opache实际使用的内存与OS实际报告使用的内存之间存在着明显的差异 分析opcache时,它告诉我,截至目前,它使用了大约850MB的内存,缓存了大约8000个脚本。然而,htop告诉我,当前的进程只使用了大约600MB的RAM,其中FPM占用了大约150MBPhp 是否可以强制opcache将缓存的脚本保留在内存中?,php,caching,memory,opcache,Php,Caching,Memory,Opcache,我们使用Apache和启用了opcache的php fpm运行生产服务器。目前,opcache的可用内存上限为1024MB 然而,当我最近分析服务器和opcache时,我注意到FPM/opache实际使用的内存与OS实际报告使用的内存之间存在着明显的差异 分析opcache时,它告诉我,截至目前,它使用了大约850MB的内存,缓存了大约8000个脚本。然而,htop告诉我,当前的进程只使用了大约600MB的RAM,其中FPM占用了大约150MB 我只能假设这意味着opcache将缓存的脚本存储在
我只能假设这意味着opcache将缓存的脚本存储在磁盘上而不是RAM上。但是,由于性能对我们来说很重要,而且我们还有剩余的RAM,我们有没有办法强制opcache将其所有缓存脚本存储在RAM中?opcache已经将所有编译代码(opcode)存储在内存中 OPcache通过存储预编译脚本来提高PHP性能 字节码在共享内存中,从而消除了PHP加载的需要 并在每个请求上解析脚本 由于使用系统API计算内存使用量、htop、top计算的方式不同,这些数字会有所不同,其中as opcache_get_status使用内部方法计算相同的数据-
这是可能的,因为共享变量/语言级别的内存优化。Opcache已将所有编译代码(操作码)存储在内存中 OPcache通过存储预编译脚本来提高PHP性能 字节码在共享内存中,从而消除了PHP加载的需要 并在每个请求上解析脚本 由于使用系统API计算内存使用量、htop、top计算的方式不同,这些数字会有所不同,其中as opcache_get_status使用内部方法计算相同的数据-
这是可能的,因为共享变量/语言级别的内存优化。您认为您的脚本需要超过150MB吗?我更希望它们都保存在内存中。我们正在运行一个专用的分片,该分片有足够的可用RAM。Opcache只使用RAM来缓存脚本,因为Opcache将编译的操作码存储在内存中,内存结果将因探查器而异。只需添加—您可以检查其他配置,如禁用filestamp check it wil reduce几毫秒。我已经禁用了时间戳检查和其他面向开发人员的设置,因为这是一个生产服务器。正如我在问题中提到的,除非opcache或操作系统报告错误的内存使用情况,否则opcache根本不可能缓存在内存中。您如何分析opcache?您认为您的脚本需要150MB左右吗?我更希望它们都保存在内存中。我们正在运行一个专用的分片,该分片有足够的可用RAM。Opcache只使用RAM来缓存脚本,因为Opcache将编译的操作码存储在内存中,内存结果将因探查器而异。只需添加—您可以检查其他配置,如禁用filestamp check it wil reduce几毫秒。我已经禁用了时间戳检查和其他面向开发人员的设置,因为这是一个生产服务器。正如我在问题中提到的,opcache不可能缓存在内存中,除非它或操作系统报告错误的内存使用情况?