当前位置: 首页 > 面试题库 >

如何在Redis中调试错误“使用的内存>'maxmemory'时不允许OOM命令”?

巴洲
2023-03-14
问题内容

尝试设置密钥时出现“不允许OOM命令”, maxmemory通过maxmemory-policy“ volatile-lru” 设置为500M
,我为发送给redis的每个密钥设置TTL。

INFO 命令返回: used_memory_human:809.22M

  1. 如果maxmemory设置为500M,我怎么达到809M?
  2. INFO 命令没有显示任何键空间,这怎么可能?
  3. KEYS * 返回“(空列表或集合)”,我试图更改数据库号,但仍未找到键。

这是info命令输出:

redis-cli -p 6380
redis 127.0.0.1:6380> info
# Server
redis_version:2.6.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_mode:standalone
os:Linux 2.6.32-358.14.1.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:28291
run_id:229a2ee688bdbf677eaed24620102e7060725350
tcp_port:6380
uptime_in_seconds:1492488
uptime_in_days:17
lru_clock:1429357

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:848529904
used_memory_human:809.22M
used_memory_rss:863551488
used_memory_peak:848529192
used_memory_peak_human:809.22M
used_memory_lua:31744
mem_fragmentation_ratio:1.02
mem_allocator:jemalloc-3.0.0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1375949883
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok

# Stats
total_connections_received:3
total_commands_processed:8
instantaneous_ops_per_sec:0
rejected_connections:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0

# Replication
role:master
connected_slaves:0

# CPU
used_cpu_sys:18577.25
used_cpu_user:1376055.38
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Keyspace
redis 127.0.0.1:6380>

问题答案:

您是否有可能更改了数据库数量?如果您使用非常大的数字,那么初始内存使用率可能会很高



 类似资料:
  • 问题内容: 使用redis时,出现错误: info命令显示: 用内存高吗?我是一个完整的Redis新手。如果是这样,怎么会出现此问题,我应该从这里继续进行吗?同一错误都在生产环境中出现(Heroku),因此,我们非常感谢您的帮助。谢谢。 问题答案: 达到最大内存限制时,将返回此消息。您可以使用以下命令检查当前限制: 结果以字节为单位。 请注意,一个空的Redis实例使用大约710KB的内存(在Li

  • 问题内容: 我目前在设置AS400(iseries V6R1)和Debian之间的odbc链接时遇到一些问题,我使用iseriesAccess7.1 odbc驱动程序64位,unixODBC2.3.1和php5.4以及unixODBC支持。 我的链接似乎很好,因为我可以使用isql命令(它是unixODBC的一部分)连接到我的数据库,并执行一些SQL查询,但是使用php脚本无法读取数据库中的记录。

  • 问题内容: 我没有处理大文件的经验,所以我不确定该怎么办。我试图使用 file_get_contents 读取几个大文件;任务是使用 preg_replace() 清洁和修补它们。 我的代码在小文件上运行良好;但是,大文件(40 MB)触发内存耗尽错误: 我当时在考虑使用 fread(), 但是我不确定那也行。有解决此问题的方法吗? 感谢您的输入。 这是我的代码: 问题答案: 首先,您应该了解,在

  • 我已经安装Laravel使用Hostinger自动安装程序。现在,我试图安装的Auth UI使用这个命令:。 我还尝试从命令末尾删除该版本。它显示: 致命错误:允许的内存大小。 请告诉我如何解决这个问题。

  • 我有一个用UTF-16 LE编码的超级简单的XML文档。 我这样加载它(使用): 我通过保存文件并用十六进制编辑器检查它,检查了没有额外的BOM/垃圾符号(前导或任何地方)。XML格式正确。 但是,我仍然得到以下错误: 我上下搜索了这个错误,但他们都说这是BOM的错误,我(据我所知)已经证实不是这样。还有什么不对劲?

  • 问题内容: 我正在尝试使用以下方式将数据加载到mysql数据库中 这个问题的主题是我得到的答复。我了解默认情况下本地数据卸载是关闭的,因此我必须使用命令启用它,但我不知道将此命令放置在何处。 问题答案: 您可以在设置客户端连接时将其指定为附加选项: 这是因为该功能打开了一个安全漏洞。因此,如果您确实想使用它,则必须以显式方式启用它。 客户端和服务器都应启用本地文件选项。否则它将不起作用。要为服务器