相关疑难解决方法(0)

CPU 100%时如何提高Redis性能?分片?最快的.Net 客户端?

由于我们网站上的负载大量增加,redis 现在正在努力应对峰值负载,因为 redis 服务器实例的 CPU 使用率达到 100%(在八个核心之一上),导致超时。

我们已将客户端软件更新至 ServiceStack V3(来自 BookSleeve 1.1.0.4),并将 redis 服务器升级至 2.8.11(来自 2.4.x)。我选择ServiceStack是因为存在使用ServiceStack.Redis的Harbour.RedisSessionStateStore。我们之前将 AngiesList.Redis 与 BookSleeve 一起使用,但我们也体验到了 100%。

我们有八个 Redis 服务器配置为主/从树。一台服务器用于会话状态。其他的用于数据缓存。一个主设备有两个主设备/从设备,每个设备连接到两个从设备。

当服务器在 100% CPU 使用率时开始堵塞时,它们在峰值时可容纳大约 600 个客户端连接。

我们可以做些什么来提高性能?

分片和/或 StackExchange Redis 客户端(据我所知,没有可用的会话状态客户端...)。

或者可能是其他什么?会话服务器也达到 100%,并且未连接到任何其他服务器(数据和网络吞吐量很低)。


更新1:redis-cli INFO分析

这是运行 Redis 2.8 一晚后 INFO 命令的输出。

# Server
redis_version:2.8.11
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7a57b118eb75b37f
redis_mode:standalone
os:Linux 2.6.32-431.11.2.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:5843
run_id:d5bb838857d61a9673e36e5bf608fad5a588ac5c
tcp_port:6379
uptime_in_seconds:152778
uptime_in_days:1
hz:10
lru_clock:10765770
config_file:/etc/redis/6379.conf

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

# Memory
used_memory:80266784
used_memory_human:76.55M
used_memory_rss:80719872
used_memory_peak:1079667208 …
Run Code Online (Sandbox Code Playgroud)

performance sharding redis servicestack.redis stackexchange.redis

5
推荐指数
2
解决办法
2万
查看次数