程序员探案之漫长的Redis指令操作

自推出程序员探案系列第一篇(程序员探案之"被吃掉"的串口数据)以来,引起了一些程序员探长的共鸣,也被CSDN转载。这些都是我继续写下去的动力,谢谢大家。

这不,最近探长又破了个棘手的案子。咳咳,探长要开始还原案件始终,请耐心看下文:

直击案发现场

现场图片可见,在放入redis数据时停顿了近25秒,这是什么情况,正常情况应该是下面这样的才对啊

仔细理理现场

这是用python和redis实现的一个简单消息队列,通过redis-py的驱动用rpush和lpop命令来实现消息的入队和出队,还有一个特征是这是一个新的嵌入式开发平台

案情分析

一号疑犯"redis-server"

redis-server作为主要服务提供商,自然嫌疑最大。

但排查完redis-server的各项配置,连接数、阻塞数等等指标也一切正常,没有发现任何直接证据指向它。

另外,同样的代码在另一个开发平台上远程连接"案发"现场平台的redis-server也很正常,这也旁证redis-server是清白的,暂时解除嫌疑。

二号疑犯"redis-py"

redis-py作为服务的中间商,承上启下,嫌疑也不小。

redis-py作为第三方库,查看版本,安装路径,都正常。

检索github的issue和相关案例,也未发现类似“犯罪记录”。

另外,它也有旁证。

  1. 相同代码在其他环境一切正常
  2. 案发环境连接远程的redis-server也正常

这样,redis-py的嫌疑也解除了。

重大嫌疑人陆续被排除嫌疑,顿时又变得扑朔迷离,再次陷于僵局

摸底排查,揪出元凶

静一静,重新捋一捋手头的所有线索,功夫不负有心人,发现了些蛛丝马迹。

在redis-py源码中,创建socket连接时,发现getaddrinfo调用

打点定位,发现就是在这里阻塞耗时。

这下,"真凶"水落石出

但疑团还没有消散,为什么其他环境正常呢?这个是socket内置模块,正常不会有这么明显的漏洞,那就是说...还有"幕后大佬"。

先了解一下getaddrinfo的作用和机制

getaddrinfo 的作用是将主机名和服务名转化为套接字地址结构的,通常情况下会优化读取/etc/hosts中的内容,再通过DNS域名服务进行通信

再通过一个简单的测试,具体看看

到此,“元凶”现身,/etc/hosts文件内容缺失

结案总结

"案件"最终告破,当然少不了程序员探长的英明神武,不过也暴露出程序员的一些问题,自己的坑还得自己填。

记录几点,以供参考:

1 对于新开发环境,特别是嵌入式环境,系统镜像里一定要保证好相关配置文件的完整性(这里就是缺少/etc/hosts)

2 /etc/nsswitch这个文件也会影响域名的解析,默认配置 hosts: files dns,这样会先读取/etc/hosts中的数据

3 对于本地服务的能不用localhost就不用,用127.0.0.1更快

原文发布于微信公众号 - chafezhou(gh_5b8f0c59b682)

原文发表时间:2018-06-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Youngxj

关于旗下小杰网络论坛闭站说明

1294
来自专栏织云平台团队的专栏

织云Lite V1.4| 权限控制下的运营事故规避

随着业务发展,设备越来越多,各业务机器运行各自的功能程序,团队成员也在持续增加,开发、测试、运维等不同团队的同事各司其职。多团队合作模式带来的问题就是运营事故的...

1012
来自专栏流星博客

吐槽下坑爹的主机屋

大家好!  众所周知  建网站离不开域名和建站主机 但这两样东西大多都是需要付费的    

20412
来自专栏杨建荣的学习笔记

Oracle数据不同步的问题分析和解决思路

其实帮助很多的朋友解决过Oracle数据库数据不同步的问题,看似简单的问题分析出来的原因也是五花八门。比如: Oracle数据库问题的一点总结 在查看一些没有专...

3304
来自专栏EAWorld

微服务 to 变 or not to 变?

原著作者介绍: Viktor Farcic CloudBees资深顾问,熟悉多种编程语言,从最早的Pascal,Basic,ASP,C,C++,Perl,Py...

2727
来自专栏架构专栏

互联网公司想月薪15K挖走大牛程序员网友:欠你的吗

@路比咯:这程序员很实在,都说到点上根本不浪费彼此时间,个人感觉是这个HR气量太小反应过激才说了这些鬼

964
来自专栏数据和云

【警惕】大量未修复WebLogic WSAT组件RCE漏洞的主机被挖矿程序攻击

警惕 从1月1日开始,大量未修复WebLogic WSAT(全称:Web Services Atomic Transactions)组件RCE漏洞的主机被挖矿...

3246
来自专栏CSDN技术头条

用最少的钱,实现工程效率实践

研发团队的工程效率实践,现在越来越多的人开始谈论这个话题,但是真真能实操的还本场 Chat 侧重于实践,不会有抽象的概念和理论知识。

1053
来自专栏SDNLAB

OpenDaylight开发学习十问十答

编者说 OpenDaylight自面世起,“坑”就一直伴随着它的成长而成长,无论是起初的“不稳定”门,还是长期“言简意不赅”的文档,似乎对于想一探究竟的小伙伴总...

2668
来自专栏杨建荣的学习笔记

一次数据变更的审核过程(r8笔记第95天)

今天正在做一个数据变更操作,突然一个开发的同学找到我,看起来比较着急的样子,说想让我做一个数据变更。 当然在这种时候,我正在做的数据变更操作已经被打断了...

2517

扫码关注云+社区