gpt4 book ai didi

PHP Opcache 替换策略

转载 作者:可可西里 更新时间:2023-11-01 00:57:11 24 4
gpt4 key购买 nike

我知道 APC 正在被 OpCache 取代。我启用了这个模块,到目前为止一切正常。但是,关于如何调整以获得最佳性能的文档很少。

我的系统目前有大量需要缓存的文件。因此,如果这些文件使其缓存,那么一切都很棒。但是,如果达到最大值,我可能不希望缓存中有很多文件。

最好我想缓存将具有最高命中率的文件。因此,如果有的话,很高兴知道 Opcache 使用的替换策略是什么。如何解决缓存中没有最常用文件的问题。 FIFO、LRU 中的任何一个都适用于我的系统,但我还没有找到任何关于此的文档。

任何帮助,将不胜感激!

最佳答案

更换策略

不要期望 FIFO 或 LRU。那东西不是那样工作的。 Opcode 缓存在首次访问 PHP 文件时存储代码,在内部优化代码并根据时间间隔和文件修改标记以及使用的内存做出是否更新缓存中的文件的决定。

所以关键问题是:要缓存多少文件?多少内存用于存储?什么是内部代码优化?如何排除文件?什么时候刷新文件?如果您想深入了解 OpCache,您可以在此处找到 Julien Pauli 的精彩文章:http://jpauli.github.io/2015/03/05/opcache.html

How do I solve the problem not having most frequently used files in cache.



我会增加内存和最大文件设置,直到这些文件被缓存。

However, if the max is reached I have a lot of files that I might not want in cache.


  • opcache.blacklist_filename到救援。您可以使用黑名单文件来描述不应加速哪些文件。

  • 重要说明:您不能使用 opcache-invalidate() 触发缓存删除。功能。这只会标记一个已经缓存的文件,以便重新编译并重新添加到缓存中(重新编译/刷新)。从缓存中完全删除文件需要重置或重新启动;这总是会导致尖峰。

    OpCache Readme包含以下建议:

    Speed Tuning

    We recommend the following configuration options for best performance in a production environment.

    opcache.memory_consumption=128 
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=4000
    opcache.revalidate_freq=60
    opcache.fast_shutdown=1
    opcache.enable_cli=1

    You also may add the following, but it may break some applications and frameworks. Please, read description of these directives and add them on your own risk.

    opcache.save_comments=0 
    opcache.enable_file_override=1

    There is very little documentation on how to tune this for best performance



    性能调优策略

    找到最佳设置基于很多事情。您可以使用 A/B 或 A/B/C 测试策略来为配置指令找到合适的值。

    您的起点是使用默认设置激活的 OpCache 以运行性能测试 A。然后您将调整或调整一些 OpCache 指令以改变缓存行为并运行性能测试 B。最后,您可以比较结果并得出结论,如果对指令的更改会产生您想要的结果并提高性能。

    缓存预热

    当缓存为空时,运行一个脚本,该脚本通过“热路径”(应用程序的常用路径)。这确保了底层文件从一开始就具有缓存覆盖。

    GUI工具

    要查看统计信息、缓存的文件和使用的内存,您还可以使用 OpCache“检查器”之一。这为您提供了概览,并使您也可以找到要从缓存中排除的文件。
  • https://github.com/PeeHaa/OpCacheGUI
  • https://github.com/rlerdorf/opcache-status
  • https://github.com/amnuts/opcache-gui

  • 一些与性能相关的指令

    http://php.net/manual/de/opcache.configuration.php
  • opcache.memory_consumption .默认为 64MB。你可以提出来。
  • opcache.max_accelerated_files - 缓存文件的最大数量。找出文件数量:find . -type f -print | grep php | wc -l .
  • 重要的是 opcache.optimization_level指示。详情见https://stackoverflow.com/a/21291587/1163786
  • opcache.interned_strings_buffer - 优化器使用称为字符串实习的技术来提高性能。这基本上意味着,如果您的应用程序使用字符串“Hello World” 100 次,则该字符串将仅存储 1 次,这将节省 99 次字符串存储并导致对现有值的 99 次访问。 4MB是默认的。尝试 8、12、16。
  • opcache.validate_timestamps=0意味着额外的 stat 调用被删除。
  • opcache.save_comments - 您的应用程序是否在评论中使用了 docblock 注释?如果没有,请关闭。这样可以节省内存。
  • opcache.load_comments - 评论是否在缓存中取决于 opcache.save_comments。该指令的意思是“不加载缓存的注释”。似乎东西被缓存了,从未使用过。我必须管理我没有得到这个指令的用例。换句话说:我使用 opache.save_comments来控制评论的添加。
  • opcache.fast_shutdown - 这是一种更快地调用析构函数的技术。打开。
  • 关于PHP Opcache 替换策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317795/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com