程序员探案之漫长的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 条评论
登录 后参与评论

相关文章

来自专栏施炯的IoT开发专栏

Windows 10 IoT Serials 2 - Windows 10 IoT RTM 升级教程

    7月29日,微软推出了Windows 10 for PC的正式版,其版本号是Build 10240。近两天官方说已经有4700万的下载安装量,同时这个数...

2317
来自专栏SDNLAB

【双语频道】6分钟了解ONOS

本视频来自ONOS首席架构师Thomas Vachuska的讲解,视频在短短6分钟左右的时间内深入浅出的对ONOS的架构进行了阐述和分析,并对其功能进行了演示...

3154
来自专栏玄魂工作室

Hacker基础之Linux篇:一、系统简介

前言: 因为大佬玄魂最近比较忙,所以从今天开始我就在这个平台发布一些关于Hacker的基础知识,一开始准备了两个模块,一个是Linux基础,一...

40111
来自专栏Crossin的编程教室

分享一个“节约生命”的技巧,和几个技术公众号

任何一个信息都可以把人分为两类,知道的和不知道的。有些我们已知的信息,自己觉得很平常,却可能对另一些不知道的人来说很有用处。

1131
来自专栏腾讯云技术沙龙

陈曦:性能与稳定并存 Elasticsearch调优实践

我今天分享的是Elassticsearch调优实践,首先自我介绍一下,我资历比较浅,我是腾讯TEG基础架构部后台开发工程师,虽然我不是项目经理,但是我们项目负责...

1393
来自专栏有趣的django

CRM客户关系管理系统(十二) 十二章、学员报名流程开发 2

1110
来自专栏工科狗和生物喵

怎样用U盘重装电脑系统?

开篇语 鉴于我的傻徒弟最近想给电脑换个系统。应该是,羡慕我的电脑桌面清爽干净?那我就放一下我的windows10桌面好了(桌面壁纸,是因为装系统以后我那个超炫的...

3617
来自专栏圣杰的专栏

性能优化知多少

1. 引言 最近一段时间,系统新版本要发布,在beta客户测试期间,暴露了很多问题,除了一些业务和异常问题外,其他都集中在性能上。有幸接触到这些性能调优的机会,...

1869
来自专栏安富莱嵌入式技术分享

【安富莱原创开源应用第1期】花式玩转网络摄像头之TCP上位机软件实现,高端大气上档次,速度2MB/S,华丽丽的界面效果

说明: 1、例子是两年前做的,一直没有顾上整理出来,今天特地整理出来,开源出来给大家玩。 2、上位机是emWin模拟器开发的,大家估计很难猜到,所以你会emWi...

1263
来自专栏空调论坛

空调自控系统全解析

(1) 空调区域的温度、湿度、压力等的控制,对于舒适空调,温湿度过高过低都影响舒适感,只有自控才能将温湿度自动控制在设计值;对于工艺空调,是生产工艺的必备条件。

783

扫码关注云+社区