Redis开发运维实践问题处理只延迟检查

6.2.1 检查CPU情况

mpstat -P ALL 1

6.2.2 检查网络情况

可以在系统不繁忙或者临时下线前检测客户端和server或者proxy 的带宽:

1)使用 iperf -s 命令将 Iperf 启动为 server 模式:

iperf –s
————————————————————
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————

2)启动客户端,向IP为10.230.48.65的主机发出TCP测试,并每2秒返回一次测试结果,以Mbytes/sec为单位显示测试结果:

iperf -c 10.230.48.65 -f M -i 2

6.2.3 检查系统情况

着重检查探测服务延迟、 监控正在请求执行的命令、获取慢查询

6.2.4 检查连接数

查看info里面的total_connections_received,如果该值不断升高,则需要修改应用,采用连接池方式进行,因为频繁关闭再创建连接redis的开销很大。

6.2.5 检查持久化

RDB的时间:latest_fork_usec:936 上次导出rdb快照,持久化花费,微秒。 检查是否有人使用了SAVE。

6.2.6 检查命令执行情况

INFO commandstats

查看命令执行了多少次,执行命令所耗费的毫秒数(每个命令的总时间和平均时间)





时间: 2024-08-01 01:20:58

Redis开发运维实践问题处理只延迟检查的相关文章

Redis开发运维实践问题处理只内存检查

8.3.1 系统内存查看 script/下的memstat.sh或者ps_mem.py都可以查看系统的内存情况,两个工具都需要root权限. 8.3.2 系统swap内存查看 #!/bin/bash # Get current swap usage for all running processes # Erik Ljungstrom 27/05/2011 # Modified by Mikko Rantalainen 2012-08-09 # Pipe the output to "sort

Redis开发运维实践开发者设计规范之延迟考虑

4.5 延迟考虑 1. 尽可能使用批量操作: mget.hmget而不是get和hget,对于set也是如此. lpush向一个list一次性导入多个元素,而不用lset一个个添加 LRANGE 一次取出一个范围的元素,也不用LINDEX一个个取出 2. 尽可能的把redis和APP SERVER部署在一个网段甚至一台机器. 3. 对于数据量较大的集合,不要轻易进行删除操作,这样会阻塞服务器,一般采用重命名+批量删除的策略: 排序集合: # Rename the key newkey = "gc

Redis开发运维实践开发者设计规范之典型使用场景参考

4.6 典型使用场景参考 下面是Redis适用的一些场景: 1. 取最新 N 个数据的操作 比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的 5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取. 使用LPUSH latest.comments命令,向 list集合中插入数据 插入完成后再用 LTRIM latest.comments 0 5000 命令使其永远只保存最近5000个 ID 然后我们在客户端获取某一页评论时可以用下面的逻辑 FUNCTION

Redis开发运维实践高可用和集群架构与实践(二)

11.1.2 环境搭建 11.1.2.1 部署架构 部署架构上采用三台机器,一个Master接受写请求,两个Slave进行数据同步,三台机器上都部署sentinel(一般为奇数个,因为需要绝大部分进行投票才能failover).(官方示例)具体架构如下图: 注意:如果有条件可以将sentinel多部署几个在客户端所在的应用服务器上,而不是与从节点部署在一起,这样避免整机宕机后sentinel和slave都减少而导致的切换选举sentinel无法超过半数. 11.1.2.2 网络规划 redis高

Redis开发运维实践专题功能之事务

3.2 事务 用Multi(Start Transaction).Exec(Commit).Discard(Rollback)实现. 在事务提交前,不会执行任何指令,只会把它们存到一个队列里,不影响其他客户端的操作.在事务提交时,批量执行所有指令. 一般情况下redis在接受到一个client发来的命令后会立即处理并返回处理结果,但是当一个client在一个连接中发出multi命令后,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一个队列中.当从此连接受到exec命令后

Redis开发运维实践上线部署规划之持久化设置

5.4 持久化设置 RDB和AOF两者毫无关系,完全独立运行,如果使用了AOF,重启时只会从AOF文件载入数据,不会再管RDB文件.在配置上有三种选择:不持久化,RDB,RDB+AOF.官方不推荐只开启AOF(因为恢复太慢另外如果aof引擎有bug),除非明显的读多写少的应用. 开启AOF时应当关闭AOF自动rewrite,并在crontab中启动在业务低峰时段进行的bgrewrite. 如果在一台机器上部署多个redis实例,则关闭RDB和AOF的自动保存(save "", auto

Redis开发运维实践上线部署规划之多实例配置

5.5 多实例配置 如果一台机器上防止多个redis实例,为了防止上下文切换导致的开销,可以采用taskset.taskset是LINUX提供的一个命令(ubuntu系统可能需要自行安装,schedutils package).他可以让某个程序运行在某个(或)某些CPU上. 1)显示进程运行的CPU (6137为redis-server的进程号) [redis@hadoop1 ~]$ taskset -p 6137 pid 6137's current affinity mask: f 显示结果

Redis开发运维实践数据操作之集合操作

2.4.1 添加元素 sadd key member 成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误 2.4.2 移除元素 srem key member 成功返回1,如果member在集合中不存在或者key不存在返回0,如果key对应的不是set类型的值返回错误 2.4.3 删除并返回元素 spop key 如果set是空或者key不存在返回nil 2.4.4 随机返回一个元素 srandmember key 同spop,随机取set中的一个元素,但是不删除元素 2.

Redis开发运维实践上线部署规划之内存规划

5.1 内存.CPU规划 一定要设置最大内存maxmemory参数,否则物理内存用爆了就会大量使用Swap,写RDB文件时的速度很慢.注意这个参数指的是info中的used_memory,在一些不利于jmalloc的时候,内存碎片会很大. 多留55%内存是最安全的.重写AOF文件和RDB文件的进程(即使不做持久化,复制到Slave的时候也要写RDB)会fork出一条新进程来,采用了操作系统的Copy-On-Write策略(子进程与父进程共享Page.如果父进程的Page-每页4K有修改,父进程自