文档:管理

本页面正在审核中。 本页面可能不正确、包含无效链接和/或需要技术审核。将来它可能会发生重大变化或被完全删除。


Valkey 设置提示

Linux

  • 使用 Linux 操作系统部署 Valkey。Valkey 也定期在 macOS 和 FreeBSD 上进行测试,并且偶尔在其他 OpenBSD、NetBSD、DragonFlyBSD 和 Solaris 派生系统上进行测试。然而,Linux 是大多数压力测试的执行地,也是大多数生产部署的运行地。

  • 将 Linux 内核的内存过量使用(overcommit memory)设置设为 1。将 vm.overcommit_memory = 1 添加到 /etc/sysctl.conf。然后,重启或运行命令 sysctl vm.overcommit_memory=1 来激活该设置。有关详细信息,请参阅 FAQ:在 Linux 上后台保存因 fork() 错误而失败?

  • 为确保 Linux 内核的透明大页(Transparent Huge Pages)功能不影响 Valkey 的内存使用和延迟,请运行命令:echo never > /sys/kernel/mm/transparent_hugepage/enabled 以禁用它。有关更多背景信息,请参阅 延迟诊断 - 透明大页引起的延迟

内存

  • 确保已启用交换分区(swap),并且交换文件大小等于系统内存量。如果 Linux 没有设置交换分区,并且您的 Valkey 实例意外消耗了太多内存,Valkey 可能会在内存不足时崩溃,或者 Linux 内核的 OOM killer 可能会终止 Valkey 进程。启用交换分区后,您可以检测到延迟峰值并对其进行处理。

  • 在您的实例中设置一个明确的 maxmemory 选项限制,以确保在系统内存限制即将达到时,它将报告错误而不是失败。请注意,maxmemory 的设置应通过计算 Valkey 的开销(数据之外)和碎片开销来确定。因此,如果您认为有 10 GB 的空闲内存,请将其设置为 8 或 9。

  • 如果您在写入密集型应用程序中使用 Valkey,在将 RDB 文件保存到磁盘或重写 AOF 日志时,Valkey 可以使用高达正常内存量 2 倍的内存。额外使用的内存与保存过程中写入操作修改的内存页数量成比例,因此通常与在此期间触及的键(或聚合类型项)的数量成比例。请确保相应地调整内存大小。

  • 请参阅 LATENCY DOCTORMEMORY DOCTOR 命令以协助故障排除。

运行方式

  • 在 daemontools 下运行时,请使用 daemonize no

复制

  • 设置一个与 Valkey 使用内存量成比例的非平凡的复制积压(replication backlog)。积压使副本更容易与主实例同步。

  • 如果您使用复制功能,即使禁用了持久化,Valkey 也会执行 RDB 保存。(这不适用于无盘复制。)如果主实例没有磁盘使用需求,请启用无盘复制。

  • 如果您正在使用复制功能,请确保您的主实例已启用持久化,或者在崩溃时不会自动重启。副本将尝试维护主实例的精确副本,因此如果主实例以空数据集重启,副本也将被清除。

安全

  • 默认情况下,Valkey 不需要任何身份验证,并监听所有网络接口。如果您将 Valkey 暴露在互联网或其他攻击者可以访问的地方,这是一个很大的安全问题。请查看我们的 安全页面快速入门,了解如何保护 Valkey 的信息。

在 EC2 上运行 Valkey

  • 使用基于 HVM 的实例,而不是基于 PV 的实例。
  • 将 Valkey 持久化与 EC2 EBS 卷结合使用时需要谨慎处理,因为有时 EBS 卷具有高延迟特性。
  • 如果副本与主实例同步时遇到问题,您可能需要尝试无盘复制。

升级或重启 Valkey 实例而无需停机

Valkey 被设计为在您的服务器中长期运行的进程。您可以使用 CONFIG SET 命令在不重启的情况下修改许多配置选项。您还可以在不重启 Valkey 的情况下,从 AOF 切换到 RDB 快照持久化,反之亦然。有关更多信息,请查看 CONFIG GET * 命令的输出。

有时,需要重启,例如,将 Valkey 进程升级到新版本,或者需要修改当前 CONFIG 命令不支持的配置参数时。

请遵循以下步骤以避免停机。

  • 将您的新 Valkey 实例设置为当前 Valkey 实例的副本。为此,您需要一台不同的服务器,或者一台有足够 RAM 同时运行两个 Valkey 实例的服务器。

  • 如果您使用单个服务器,请确保副本在与主实例不同的端口上启动,否则副本无法启动。

  • 等待复制初始同步完成。检查副本的日志文件。

  • 使用 INFO 命令,确保主实例和副本具有相同数量的键。使用 valkey-cli 检查副本是否按预期工作并响应您的命令。

  • 使用 CONFIG SET replica-read-only no 命令允许向副本写入。

  • 配置所有客户端使用新实例(副本)。请注意,您可能需要使用 CLIENT PAUSE 命令,以确保在切换期间没有客户端可以写入旧的主实例。

  • 一旦您确认主实例不再接收任何查询(您可以使用 MONITOR 命令进行检查),请使用 REPLICAOF NO ONE 命令将副本提升为主实例,然后关闭您的主实例。

如果您正在使用 Valkey SentinelValkey Cluster,升级到新版本最简单的方法是逐个升级副本。然后您可以执行手动故障转移,将其中一个已升级的副本提升为主实例,最后提升最后一个副本。