watchdog(看门狗)是Redis2.6 版本将发布的一个新特性,它用于诊断Redis的延迟问题,这一功能有点类似于慢日志。主要是记录一些太慢的行为,以便排查原因。其具体工作原理和流程如下:
- 通过运行时的CONFIG SET命令设置watchdog的开启参数
- 设置完成后,Redis就开始对自身的命令处理进行性能监控
- 如果Redis发现自己在处理一些操作时不够快,那么就会在日志里记录一条信息,信息包含了在哪一部分占用了时间,并打出具体的调用栈
- 出现问题的用户到社区反馈的时候,带上日志里的诊断信息,开发者能够更快速准确的定位到你的问题
Redis作者指出,watchdog还是一个实验性功能,开启它可能会对数据产生影响,所以建议在使用时做好数据备份。
watchdog的具体设置方法如下例所示:
CONFIG SET watchdog-period 500 |
通过CONFIG SET命令设置watchdog-period参数,其值单位为毫秒,在上例中,运行时间超过500毫秒的操作将会被记录下来。
注意:这个参数只能通过CONFIG SET来设置,在配置文件里是无法设置的,因为在默认情况下,是绝不推荐开启它的。对性能和稳定性都有影响。当你诊断完成后,可以再通过上面的命令,将延迟时间设置为0来关闭watchdog的功能。
watchdog在日志中的输出如下例:
[8547 | signal handler] (1333114359) — WATCHDOG TIMER EXPIRED — /lib/libc.so.6(nanosleep+0x2d) [0x7f16b5c2d39d] /lib/libpthread.so.0(+0xf8f0) [0x7f16b5f158f0] /lib/libc.so.6(nanosleep+0x2d) [0x7f16b5c2d39d] /lib/libc.so.6(usleep+0x34) [0x7f16b5c62844] ./redis-server(debugCommand+0x3e1) [0x43ab41] ./redis-server(call+0x5d) [0x415a9d] ./redis-server(processCommand+0x375) [0x415fc5] ./redis-server(processInputBuffer+0x4f) [0x4203cf] ./redis-server(readQueryFromClient+0xa0) [0x4204e0] ./redis-server(aeProcessEvents+0x128) [0x411b48] ./redis-server(aeMain+0x2b) [0x411dbb] ./redis-server(main+0x2b6) [0x418556] /lib/libc.so.6(__libc_start_main+0xfd) [0x7f16b5ba1c4d] ./redis-server() [0x411099] —— |
上面日志是通过DEBUG SLEEP命令来产生的,你在诊断自己具体问题的时候可能会出现不同的日志。在诊断问题时,如果同时打出了多段日志,尽可能的都发出来,这样方便开发人员进行错误排查。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
创建NoSQL数据建模符号 企业架构师亲自上阵
新兴的NoSQL数据风格促使创新的应用程序快速发展,但NoSQL同时也带来了挑战。NoSQL系统能够快速投入生产,有时甚至根本不用创建任何的前期模式。
-
深入理解Amazon DynamoDB NoSQL云数据库服务
Amazon DynamoDB NoSQL云数据库即服务主要为跨移动设备、网页web端、游戏、数字营销和物联网领域的应用提供支持。