我的生产 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 中的错误修复组合是罪魁祸首