程序员探案之Python和Redis的第三者
消息来源:baojiabao.com 作者: 发布时间:2024-06-02
作者 | 周小毛
责编| 郭芮
在《程序员探案之"被吃掉"的数据》一文中,本探长英明神武地解决了嵌入式开发过程中串口数据“走丢”的问题。这不,最近探长又破了个棘手的案子。咳咳,探长要开始还原案件始终了,请耐心看下文。
直击案发现场
现场图片可见,在放入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和相关案例,也未发现类似“犯罪记录”。另外,它也有旁证:相同代码在其他环境一切正常,案发环境连接远程的Redis-Server也正常。
这样,Redis-py的嫌疑也解除了。
重大嫌疑人陆续被排除嫌疑,顿时又变得扑朔迷离,再次陷于僵局。
摸底排查,揪出元凶
静一静,重新捋一捋手头的所有线索,功夫不负有心人,我又发现了些蛛丝马迹。在Redis-py源码中,创建Socket连接时,发现Getaddrinfo调用。
打点定位,发现就是在这里阻塞耗时。这下,"真凶"水落石出。
但疑团还没有消散,为什么其他环境正常呢?这个是Socket内置模块,正常不会有这么明显的漏洞,那就是说......还有"幕后大佬"。
先了解一下Getaddrinfo的作用和机制:
Getaddrinfo 的作用是将主机名和服务名转化为套接字地址结构的,通常情况下会优化读取/etc/hosts中的内容,再通过DNS域名服务进行通信。
再通过一个简单的测试,具体看看:
到此,“元凶”现身,/etc/hosts文件内容缺失。
结案总结
"案件"成功告破当然少不了程序员探长的英明神武,不过也暴露出程序员的一些问题,自己的坑还得自己填。
记录几点,以供参考:
对于新开发环境,特别是嵌入式环境,系统镜像里一定要保证好相关配置文件的完整性(这里就是缺少/etc/hosts)。
/etc/nsswitch这个文件也会影响域名的解析,默认配置 hosts: files dns,这样会先读取/etc/hosts中的数据。
对于本地服务的能不用localhost就不用,用127.0.0.1更快。
声明:本文为作者投稿,版权归作者个人所有。
相关文章
- 中兴受美国制裁事件 被罚了20亿美元过程事件始末 中兴被制裁后公司现状
2023-11-02 22:12:46
- B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因
2023-03-06 19:05:55
- 苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓
2023-02-19 15:09:54
- 华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?
2023-02-17 23:21:27
- google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元
2023-02-17 18:58:09
- 科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯
2023-02-17 18:46:15
- 华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比
2023-02-17 18:42:49
- 小米MAX4手机上市日期首发价格 骁龙720打造大屏标准
2023-02-17 18:37:22
- 武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱
2023-02-16 15:53:18
- 谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠
2023-02-16 13:34:45
- 巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注
2023-02-13 16:49:06
- 人手不足 韵达快递客服回应大量包裹派送异常没有收到
2023-02-07 15:25:20
- 资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东
2023-02-02 09:24:38
- 三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办
2023-01-24 10:10:02
- 华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone14
2023-01-06 20:27:09
- 芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?
2022-12-02 17:25:17
- 华为暂缓招聘停止社招了吗?官方回应来了
2022-11-19 11:53:50
- 热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全
2022-11-16 16:59:09
- 东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?
2022-10-22 15:21:55
- 苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次
2022-10-03 22:13:45