生产 redis 服务器 CPU 使用率 100%

生产 redis 服务器 CPU 使用率 100%

我的生产 redis 服务器已经疯了并且占用了 100% 的 CPU 使用率。

我已经做了我能做的一切,从升级 redis 服务器到重启机器。

我不知道这是什么原因造成的。

这是 redis.log

> [851] 17 Jun 13:13:15.290 * 后台保存成功终止
> [851] 17 Jun 13:14:16.061 * 60 秒内更改 10000 次。正在保存...
> [851] 17 Jun 13:14:16.270 * 由 pid 32451 启动后台保存
> [32451] 17 Jun 13:14:25.265 * 数据库已保存在磁盘上 [32451] 17 Jun
> 13:14:25.279 * RDB: 写时复制占用 5 MB 内存 [851] 6 月 17 日
> 13:14:25.535 * 后台保存成功终止 [851] 6 月 17 日
> 13:15:26.025 * 60 秒内更改 10000 次。正在保存... [851] 6 月 17 日
> 13:15:26.238 * 后台保存由 pid 32452 启动 [32452] 6 月 17 日
> 13:15:36.587 * DB 已保存在磁盘上 [32452] 17 Jun 13:15:36.601 * RDB:5
> 写时复制使用的内存 MB [851] 17 Jun 13:15:36.675 *
> 后台保存成功终止 [851] 17 Jun 13:16:37.079 *
> 60 秒内更改 10000 次。正在保存... [851] 17 六月 13:16:37.294 *
> 后台保存由 pid 1210 启动 [1210] 17 Jun 13:16:45.960 * DB
> 已保存在磁盘上 [1210] 17 Jun 13:16:45.975 * RDB: 已使用 5 MB 内存
> 写时复制 [851] 17 Jun 13:16:46.051 * 后台保存终止
> 成功

这是 redis-cli 的信息

> ➜ redis-cli
> redis 127.0.0.1:6379> 信息
> # 服务器 redis_version:2.6.13 redis_git_sha1:00000000 redis_git_dirty:0 redis_mode:standalone os:Linux 3.2.0-36-virtual
> x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.6.3
> 进程 ID:851 运行 ID:21c90a7be41353c4616203cdb5e6cc2af5c47337
> tcp_port:6379 正常运行时间(秒数):7809 正常运行时间(天):0 hz:10
> lru_时钟:832635
>
> # 客户端连接客户端:84 客户端最长输出列表:0 客户端最大输入缓冲区:0 客户端阻止客户端:0
>
> # 内存 used_memory:709903928 used_memory_human:677.02M used_memory_rss:726933504 used_memory_peak:710305600
> 已用内存峰值:677.40M 已用内存:37888
> 内存碎片率:1.02 内存分配器:jemalloc-3.3.1
>
> # 持久性加载:0 rdb_changes_since_last_save:2164 rdb_bgsave_in_progress:0 rdb_last_save_time:1371475146
> rdb_last_bgsave_status:确定 rdb_last_bgsave_time_sec:9
> 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:确定
>
> # 统计信息 total_connections_received:1351 total_commands_processed:3210273 instantaneous_ops_per_sec:606
> 拒绝的连接:0 过期的键:122 驱逐的键:0
> keyspace_hits:626012 keyspace_misses:1057334 pubsub_channels:0
> pubsub_patterns:0 latest_fork_usec:210633
>
> # 复制角色:master Connected_Slaves:0
>
> # CPU used_cpu_sys:75.42 used_cpu_user:6280.34 used_cpu_sys_children:74.85 used_cpu_user_children:426.74
>
> # 键空间 db0:键=33999,过期=5 db5:键=95,过期=13 db15:键=21221,过期=1 redis 127.0.0.1:6379>

普尔曼斯剖析器

> 200
> pthread_cond_wait@@GLIBC_2.3.2,bioProcessBackgroundJobs,start_thread,克隆,??
> 26 ??,sdscmp,compareStringObjects,equalStringObjects,lremCommand,call,luaRedisGenericCommand,??,??,??,??,lua_pcall,evalGenericCommand,call,processCommand,processInputBuffer,readQueryFromClient,aeProcessEvents,aeMain,main
> 19 listTypeNext、lremCommand、call、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、call、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 16 sdscmp、compareStringObjects、equalStringObjects、lremCommand、call、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、call、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 16 比较字符串对象、相等字符串对象、lremCommand、调用、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、调用、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 8 listTypeEqual、lremCommand、call、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、call、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 5 memcmp@plt、sdscmp、compareStringObjects、equalStringObjects、lremCommand、call、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、call、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 5 epoll_wait,aeProcessEvents,aeMain,main
> 2 lremCommand、call、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、call、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 2 equalStringObjects、lremCommand、call、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、call、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 1 gettimeofday、ustime、call、luaRedisGenericCommand、??、??、??、??、lua_pcall、evalGenericCommand、call、processCommand、processInputBuffer、readQueryFromClient、aeProcessEvents、aeMain、main
> 1

我正在使用 sidekiq 2.13.1 和 rails 3.2.13

任何帮助都将不胜感激。

答案1

[已修复] sidekiq 2.13.4 和 sidekiq-limit_fetch 1.7 中的错误修复组合是罪魁祸首

相关内容