`
carlosfu
  • 浏览: 581575 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ba8b5055-9c58-3ab0-8a1c-e710f0495d2c
BigMemory实战与理...
浏览量:31129
53b2087e-c637-34d2-b61d-257846f73ade
RedisCluster开...
浏览量:150899
C9f66038-7478-3388-8086-d20c1f535495
缓存的使用与设计
浏览量:125034
社区版块
存档分类
最新评论

记一次Redis超时排查

阅读更多

转载请注明出处哈:http://carlosfu.iteye.com/blog/2240426


 

 一、问题:

 

    1. 应用端使用了我们提供的一个redis-sentinel集群(1主,1从,3个sentinel)

    2. 客户端设置了超时时间为200ms, 下面是应用端提供的超时日志。注意上图对象数只有265个。

2016-02-03 14:20:42,981 [DubboServerHandler-10.16.xx.xx:20880-thread-51] WARN  com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=201 ms
...................
2016-02-03 14:20:40,168 [DubboServerHandler-10.16.xx.xx:20880-thread-9] WARN  com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=200 ms
2016-02-03 09:56:14,174 [DubboServerHandler-10.16.xx.xx:20880-thread-146] WARN  com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=200 ms
.....................
2016-02-03 12:32:03,575 [DubboServerHandler-10.16.xx.xx:20880-thread-125] WARN  com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=200 ms

   

二、逐个排查:

 

1. Redis慢查询:并没有发现慢查询,跳过

 

 

2. Redis日志:对象数只有265个,注意从2016年1月25后就没日志了,所以并没有什么异常,也没什么RDB和AOF重写。跳过

 

 

3. 机器:tsar观察cpu,内存,网络,负载,本地IO

cpu、内存、负载、本地IO比较正常。

唯一以前怀疑的是网络,按理说这个流量也不是很大,但是看了一下机房的拓扑关系以及redis-cli的测试就了解原因了,下一节进行简单分析。

 

 

 

三、怀疑并确认:

 

1. 应用端与服务器网络:

      

 

2. redis-cli

    redis-cli是个比较好的方法来测redis的延迟,为此我们用下面的api来测试,发现会出现200ms的情况。

    具体原因猜测:机房之间的带宽有限,据说只有50M,这台机器本身流量就有点大而且是台虚机。

     

redis-cli --latency-history -h ip -p port

 

[@zw-34-55 ~]# redis-cli --latency-history -h 10.11.132.xx -p 6388
min: 0, max: 1, avg: 0.48 (1290 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.87 (1264 samples) -- 15.00 seconds range
min: 0, max: 1, avg: 0.60 (1275 samples) -- 15.01 seconds range
min: 0, max: 202, avg: 0.69 (1265 samples) -- 15.00 seconds range
min: 0, max: 202, avg: 0.81 (1271 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.79 (1254 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.52 (1283 samples) -- 15.00 seconds range
min: 0, max: 1, avg: 0.50 (1288 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.89 (1260 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.57 (1277 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.52 (1284 samples) -- 15.00 seconds range
min: 0, max: 1, avg: 0.69 (1284 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.76 (1256 samples) -- 15.00 seconds range
min: 0, max: 1, avg: 0.48 (1300 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.55 (1297 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.89 (1257 samples) -- 15.01 seconds range
min: 0, max: 202, avg: 0.68 (1277 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.52 (1296 samples) -- 15.01 seconds range
min: 0, max: 1, avg: 0.74 (1278 samples) -- 15.00 seconds range
min: 0, max: 1, avg: 0.73 (1271 samples) -- 15.00 seconds rang

     

 

 

 

四、解决和观察:

 

    1. 思路:写入端是后台管理系统,流量较小,读端流量较大,为此让master改为电信机房。

    2. 解决方法:(1) 添加一个电信的slave (2) 下线老的联通slave (3) 主从做sentinel failover

    3. 总结:查询超时的基本思路 +  分配机器要考虑流量的合理性。

 

五、参考文献:

 

  1. Redis latency problems troubleshooting
  • 大小: 33.5 KB
  • 大小: 27.5 KB
  • 大小: 7.5 KB
  • 大小: 53.2 KB
  • 大小: 19.2 KB
分享到:
评论

相关推荐

    tomcat-redis依赖jar包

    Redis则是一种高性能的键值存储系统,常用于数据缓存、消息队列等场景。将Tomcat与Redis结合使用,可以提升Web应用的数据处理速度和响应效率。本文将深入探讨"tomcat-redis依赖jar包"的相关知识点。 1. **Redis连接...

    redis的jar包

    Redis是一款高性能的键值对数据库,它以内存存储为主,数据持久化为辅,提供了丰富的数据类型,如字符串、哈希、列表、集合和有序集合等。在Java开发中,通常会通过Jedis库来与Redis进行交互。Jedis是Java语言的一个...

    Redis3.0.500 for Windows最新版

    4. `Windows Service Documentation.docx`:这可能是一份文档,详细解释了如何在Windows上安装和管理Redis服务,包括配置和故障排查步骤。 5. `Redis on Windows Release Notes.docx`:这份文档应该包含了Redis在...

    一组Redis实际应用中的异常场景及其根因分析和解决方案.docx

    Redis 是一款广泛使用的开源键值存储系统,常用于构建高性能的分布式缓存和数据库解决方案。在实际应用中,Redis 可能会遇到多种异常场景,影响系统的稳定性和性能。以下是一些常见问题的分析和解决方案: 1. **...

    扩展 log4net 适用于 redis

    "扩展log4net适用于redis"是一个将日志记录功能与Redis集成的过程,通过自定义log4net的appender并在C#中实现与Redis的交互,我们能够利用Redis的高性能特性进行日志存储和检索,为复杂系统的监控和故障排查提供有力...

    redis开发运维实践指南

    总之,《Redis开发运维实践指南》是一份全面覆盖Redis使用、应用场景和最佳实践的详细文档,不仅适合初学者,对有经验的开发运维人员也有极大的参考价值。通过本文,读者可以学习到如何更有效地使用Redis,以及如何...

    redis数据库windows版。

    Redis是一款开源的、高性能的键值对存储系统,主要用于数据缓存、消息中间件和数据库。在Windows环境下,Redis提供了一套完整的安装和运行环境,让开发者能够在Windows操作系统上便捷地使用Redis服务。 1. Redis...

    Lettuce-Redis高级客户端详解1

    8. **一次性命令执行**:防止在异常情况下自动重试命令,避免数据不一致。 **使用Lettuce的准备工作:** 为了使用Lettuce,确保Redis版本至少为2.6,因为Lettuce与较新版本的RedisAPI兼容性更好。引入Lettuce库,...

    Redis-x64-5.0.10.zip

    Redis 是一个高性能的键值对数据存储系统,广泛应用于缓存、数据库以及消息中间件等场景。本资源为 "Redis-x64-5.0.10.zip",是适用于 Windows 64 位操作系统的 Redis 安装包。这个压缩文件包含了运行 Redis 在 ...

    cpp-一个基于hustoj的用redis做缓存的oj

    6. **错误处理与日志记录**:在集成Redis的过程中,可能出现连接失败、超时或数据不一致等问题,因此需要编写健壮的错误处理代码,并进行日志记录以便排查问题。 7. **性能优化**:分析和优化Redis与Hustoj之间的...

    redis(哨兵模式配置)

    Redis是一款高性能的键值对数据库,常用于缓存和消息队列等场景。哨兵(Sentinel)系统是Redis提供的一种高可用性解决方案,能够监控、故障检测以及自动故障迁移,确保服务的稳定运行。 哨兵模式配置主要包括以下几个...

    Redis-x64-3.0.504及php_redis-3.1.4-7.2-ts-vc15-x64

    6. **错误处理与调试**:在开发过程中,可以利用 `Redis::connect()` 的第三个参数设置连接超时,通过 `Redis::getLastError()` 获取错误信息,进行问题排查。 综上所述,Redis 和 PHP Redis 扩展的结合,为 PHP ...

    基于libacl的redis客户端,c++

    Redis是一种高性能的键值存储系统,常用于数据库、缓存和消息中间件。它支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合。C++是通用的、面向对象的编程语言,拥有强大的性能和灵活性。在这个项目中,我们...

    redis桌面客户端管理工具.zip

    1. **连接配置**:工具允许设置Redis服务器的连接参数,包括主机名、端口号(默认6379)、密码(如果设置了AUTH)以及超时时间。对于分布式Redis环境,如哨兵(Sentinel)或集群(Cluster),客户端可能还支持多...

    phpredis.tar.gz

    考虑到网络延迟,可以使用`pipeline()`或`transaction()`将多个命令一次性发送,以减少通信次数。另外,Redis的过期时间设置可以避免无效数据占用内存。 10. **监控与调试** 使用`info()`可以获取Redis服务器的...

    Redis Sentinel

    10. **日志与错误处理**:配置Redis Sentinel的日志输出,以便在出现问题时进行排查。理解日志中的错误代码和消息可以帮助你快速定位并解决故障。 通过以上步骤,你可以在Windows环境下成功搭建和管理一个Redis ...

    Redis x64 windows版

    3. **EventLog.dll**:这是一个动态链接库,用于集成Windows事件日志系统,使得Redis可以在Windows事件查看器中记录错误和警告,方便系统管理和故障排查。 4. **redis-check-rdb.exe**:这是一个实用工具,用于检查...

    springboot_sentinelredis

    标题 "springboot_sentinelredis" 暗示了这是一个关于如何在Spring Boot应用中整合Sentinel和Redis的实践教程。Sentinel是 Alibaba 提供的一款分布式服务治理框架,主要用于实现服务的流量控制、熔断和降级,而Redis...

    tomcat redis整合以及相关jar包

    同时,根据应用需求调整Redis的配置,如最大连接数、超时时间等,以达到最佳性能。 6. **监控与日志**:集成监控工具(如Prometheus和Grafana)来监控Redis的性能指标,并确保有合适的日志记录,以便于排查问题。 ...

    美团redis实践

    首先,周期性connect timeout问题是Redis客户端在连接Redis服务时可能遇到的问题,通常表现为连接超时。美团在处理这类问题时,采用了对慢查询增加监控和使用脚本持续收集慢查询信息的策略。慢查询监控有助于及时...

Global site tag (gtag.js) - Google Analytics