opcache.memory_consumption 配置

opcache.memory_consumption configuration

如果我为 php.ini 中的函数设置更高的值会发生什么,例如将 2GB 设置为 opcache.memory_consumption 用于普通电子商务 Web 应用程序。

opcache.memory_consumption = 2048

下面是我的pod资源配置

 resources:
        limits:
          cpu: "1"
          memory: "1Gi"
        requests:
          cpu: "450m"
          memory: "256Mi"

如果我为 OPcache 本身设置 2GB。如果它超过了应用程序的实际内存限制,将会发生什么。

来自the PHP manual

opcache.memory_consumption int

The size of the shared memory storage used by OPcache, in megabytes. The minimum permissible value is "8", which is enforced if a smaller value is set.

好的,那么共享内存存储的用途是什么?为什么我们需要更多?碰巧的是,PHP 目前最重要的内部开发人员之一 Nikita Popov 刚刚写了一篇关于 how opcache works 的博客 post。在详细介绍如何操作之前,他总结如下:

The primary purposes of opcache is to cache compilation artifacts in shared memory, to avoid the need to recompile PHP scripts on every execution.

因此,内存用于缓存将 PHP 代码编译为内部使用的中间表示的结果。所需的 space 数量取决于您尝试一次缓存多少编译代码。

我们怎么知道它是否足够?通过 运行 the opcache_get_status() function。如果内存已满或几乎已满,则您的某些脚本可能不会被缓存,因为它们不适合内存。在这种情况下,增加配置的内存大小将通过缓存这些文件来提高性能。

如果内存已经足够space,那么进一步增加大小不会有任何区别,除了防止服务器将内存用于其他事情。