[仅限PaaS]{class="badge informative" title="仅适用于云项目(Adobe管理的PaaS基础架构)和内部部署项目上的Adobe Commerce 。"}
Valkey服务配置的最佳实践
Adobe建议在配置Valkey服务时遵循以下最佳实践:
配置Valkey L2缓存
通过在VALKEY_BACKEND配置文件中设置.magento.env.yaml部署变量来配置Valkey L2缓存。
stage:
deploy:
VALKEY_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
有关云基础架构上的环境配置,请参阅《云基础架构上的Commerce指南》VALKEY_BACKEND中的__。
有关内部部署安装,请参阅配置指南中的配置Valkey页缓存。
二级缓存内存大小(Adobe Commerce Cloud)
二级缓存使用临时文件系统作为存储机制。 与专用键值数据库系统相比,临时文件系统没有控制内存使用的键逐出策略。
内存使用率控制不足会导致二级缓存内存使用率随着时间增长,因为它会累积过时的缓存。
为避免内存耗尽二级缓存实现,Adobe Commerce会在达到特定阈值时清除存储。 默认的阈值为95%。
根据项目对高速缓存存储的要求,调整二级高速缓存内存的最大使用率非常重要。 使用以下方法之一配置内存高速缓存大小:
- 创建支持票证以请求
/dev/shm装载的大小更改。 - 在应用程序级别调整
cleanup_percentage属性,以限制存储的最大填充百分比。 剩余的可用内存可供其他服务使用。
您可以在缓存配置组cache/frontend/default/backend_options/cleanup_percentage下的部署配置中调整配置。
cleanup_percentage配置选项。以下示例显示了CACHE_CONFIGURATION文件中的.magento.env.yaml:
stage:
deploy:
VALKEY_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
cleanup_percentage: 90
缓存要求可能因项目配置和自定义第三方代码而异。 L2高速缓存内存大小调整范围允许L2高速缓存运行而不发生不必要的阈值命中。
理想情况下,二级缓存内存的使用量应该稳定在低于阈值的某个级别,以避免频繁的存储清除。
您可以使用以下CLI命令检查群集的每个节点上的L2缓存存储内存使用情况,然后搜索/dev/shm行。
虽然使用情况可能因不同的节点而异,但应该会收敛到相同的值。
df -h
启用Valkey从属连接
在.magento.env.yaml配置文件中启用Valkey从连接,以便仅允许一个节点处理读写通信,而其他节点处理只读通信。
stage:
deploy:
VALKEY_USE_SLAVE_CONNECTION: true
有关更多详细信息,请参阅《云基础架构上的Commerce指南》中的VALKEY_USE_SLAVE_CONNECTION 。
对于Adobe Commerce内部部署,请使用bin/magento:setup命令配置新的Valkey缓存实现。 有关详细信息,请参阅配置指南中的将值键用于默认缓存。
预加载键
要在页面之间重用数据,请在.magento.env.yaml配置文件中列出预加载的密钥。
stage:
deploy:
VALKEY_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
id_prefix: '061_' # Prefix for keys to be preloaded
backend_options:
preload_keys: # List the keys to be preloaded
- '061_EAV_ENTITY_TYPES:hash'
- '061_GLOBAL_PLUGIN_LIST:hash'
- '061_DB_IS_UP_TO_DATE:hash'
- '061_SYSTEM_DEFAULT:hash'
有关内部部署安装,请参阅配置指南中的Valkey预加载功能。
启用过时的缓存
通过使用过时的缓存并同时生成新缓存,减少锁等待时间并提高性能,在处理大量块和缓存键时尤其如此。 在.magento.env.yaml配置文件中启用过时缓存并定义缓存类型:
stage:
deploy:
VALKEY_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
default:
backend_options:
use_stale_cache: false
stale_cache_enabled:
backend_options:
use_stale_cache: true
type:
default:
frontend: "default"
layout:
frontend: "stale_cache_enabled"
block_html:
frontend: "stale_cache_enabled"
reflection:
frontend: "stale_cache_enabled"
config_integration:
frontend: "stale_cache_enabled"
config_integration_api:
frontend: "stale_cache_enabled"
full_page:
frontend: "stale_cache_enabled"
translate:
frontend: "stale_cache_enabled"
full_page缓存与云基础架构项目上的Adobe Commerce无关,因为这些项目使用Fastly。有关配置内部部署安装的信息,请参阅配置指南中的过时缓存选项。
在部署期间,您应该会在生成和部署日志中看到以下行:
W: - Downloading colinmollenhour/credis (1.11.1)
W: - Downloading colinmollenhour/php-redis-session-abstract (v1.4.5)
...
W: - Installing colinmollenhour/credis (1.11.1): Extracting archive
W: - Installing colinmollenhour/php-redis-session-abstract (v1.4.5): Extracting archive
...
[2022-08-17 01:13:40] INFO: Version of service 'valkey' is 8.0
[2022-08-17 01:13:40] INFO: Version of service 'valkey-session' is 8.0
[2022-08-17 01:13:40] INFO: valkey-session will be used for the session if it was not overridden by SESSION_CONFIGURATION.
缓存压缩
如果您使用的Valkey maxmemory超过6GB,则可以使用缓存压缩来减少密钥占用的空间。 请注意,需要权衡客户端性能。 如果您有备用的CPU,Adobe建议启用它们。 请参阅配置指南中的对会话存储使用Valkey。
stage:
deploy:
VALKEY_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true;
frontend:
default:
backend_options:
compress_data: 4 # 0-9
compress_tags: 4 # 0-9
compress_threshold: 20480 # do not compress files smaller than this value
compression_lib: 'gzip' # snappy and lzf for performance, gzip for high compression (~70%)