记录最近的几个bug

记录最近出的几个bug

connection reset by peer

最近服务器经常性的出现connection reset by peer的错误,开始我们只是以为小概率的网络断开导致的,可是随着压力的增大,每隔2分钟开始出现一次,这就不得不引起我们的重视了。

我们的业务很简单,lvs负责负载均衡(采用的是DR模式),keepalive timeout设置的为2分钟,后面支撑两台推送服务(后面叫做push),客户端首先通过lvs路由到某台push之后,向其发送推送消息。

客户端使用的是python request(底层基于urllib3),首先我很差异出了这样的错误竟然没有重试,因为写代码的童鞋告诉我会有重试机制的。于是翻了一下request的代码,竟然发现默认的重试是0,一下子碉堡了。

不过,即使改了重试,仍然没有解决reset by peer的问题。通常出现这种情况,很大的原因在于客户端使用的是keep alive长连接保活tcp,但是服务器端关闭了该连接。可是我们的服务器实现了定时ping的保活机制,应该也不会出现的。

然后我将目光投向了lvs,因为它的timeout设置的为2分钟,而reset by peer这个错误也是两分钟一个,所以很有可能就是我们的定时ping机制不起作用,导致lvs直接close掉了连接。

于是查看push自己的代码,陡然发现我们自己设置的定时ping的时间是3分钟,顿时无语了,于是立刻改成1分钟,重启push,世界清静了。

ifconfig overruns

push换上新的机器之后,(性能妥妥的强悍),我们竟然发现推送的丢包率竟然上升了,一下子碉堡了,觉得这事情真不应该发生的。通常这种情况发生在cpu处理网络中断响应不过来。但是我们可是妥妥的24核cpu,并且开启了irqbalance。

好不,用cat /proc/interrupts之后,发现所有的网卡中断都被cpu0处理了,irqbalance完全没有起作用。google之后发现,有些网卡在PCI-MSI模式下面irqbalance无效,而我们的网卡恰好是PCI-MSI模式的。

没办法,关停irqbalance,手动设置网卡中断的SMP_AFFINITY,一下子世界清静了。

总结

可以发现,最近出的几次蛋疼的事情都是在运维层面上面出现的,实际测试也测不出来,碰到这样的问题,只能通过log这些的慢慢摸索排查了。当然也给了我一个教训,任何error级别的log都应该重视,不应该想当然的忽略。

记录最近的几个bug

时间: 2024-08-11 09:44:21

记录最近的几个bug的相关文章

[记录]mscorlib recursive resource lookup bug解决方法

[Content]Expression: [mscorlib recursive resource lookup bug]Description: Infinite recursion during resource lookup within mscorlib. This may be a bug in mscorlib, or potentially in certain extensibility points such as assembly resolve events or Cult

记录Qt的一个诡异Bug

公司的一款项目,在迭代开发阶段,突然发现运行速度越来越慢,界面切换卡顿时间在2秒以上.经过和某个不卡版本的对比,惊奇的发现程序二进制都一模一样,就几个图片资源和脚本不一样.经过差不多一天的排查,发现是新加的splash程序影响了主程序的速度-.- 因为主程序设计的原因,启动大概需要10秒左右,为了不在黑的X界面等太久,为了界面的友好,我们独立做了个splash程序,用于在主程序启动之前显示友好提示界面,splash程序的生命周期是20秒,之后将自己退出.然而奇怪的是就是这个splash程序,即时

工作两个月了,赶上周日加班,开始记录每天的成长与bug修改

今天项目的一个后台系统启动时突然报错,后来根据控制台的报错找到了错误点,手动将返回类型改成Integer就没问题 不过由于项目一直在用,昨天还没问题,遂去网上找了一下错误原因 错误信息:Could not write JSON: (was java.lang.NullPointerException); nested exception is com.fasterxml.jackson.databind.JsonMappingException 实体类数据类型与封装值不匹配!! 意思是实体类中一

博科网络设备bug记录

此博文主要记录博科网络设备相关bug.博科的以太网设备不做过多个人评论. 1.博科FCX648 SPANNING-TREE bug: 版本:目前博科各类版本中均存在此问题: BUG描述: 开启single spannnig-tree情况下在fcx648新建vlan后,必须先tagged上联端口,再untagged 相关端口进vlan内,否则将导致生成树重算bug,从而导致整个交换机生成树收.生产环境需切记谨慎操作. 2.博科FCX624 堆叠交换机组lacpbug 博科网络设备bug记录,布布扣

BUG数量和项目成本

 在说BUG数量对项目成本的影响之前,首先说下软件测试流程,本人所在的公司使用的是maintis作为跟踪BUG的工具,使用其他的工具,对BUG测试流程没有影响 具体流程如下, 测试员执行测试用例 测试员如果发现BUG,在mantis上记录BUG信息,同时将信息转给项目经理 项目经理浏览BUG记录,把相应的BUG转给对应的开发人员 程序员按照maintis记录的内容,执行测试用例,确认是否有BUG 程序员修改BUG 程序员修改BUG结束后,更新mantis上的BUG状态 测试员验证已修复的BUG

bug生命周期中的各种状态

所有软件开发过程的目的都是为客户(软件产品的终端用户)提供一个解决问题的方案(软件产品),以帮助客户更加高效地工作或生活(从时间和费用上来讲).一个成功的软件开发过程就是为客户提供了所有他所要求的需求. 一个没有软件测试的软件开发过程是不完善的.软件测试是为了寻找并修复软件中的bug/错误,它可以帮助提高软件的质量,以保证用户可以正常使用软件产品. 什么是一个bug/错误? 软件中的bug或者错误就是所有会影响软件整体或者部分功能的正常运行的软件行为. 怎样找到bug/错误? 我们主要依靠运行测

LintCode 刷题记录

1. A + B 问题:给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符. 思路:使用^来求当前位置上的值,用&来求每个位置上的进位,进位向前移动一位后继续循环,直到进位为0. class Solution { public: /* * @param a: The first integer * @param b: The second integer * @return: The sum of a and b */ int aplusb(int a, int b) { // w

记录一下我的排查问题过程实例

其实实习这么久,花最多时间还是在排查自己代码出的问题上面去. 其实也没有什么统一的方法,我自己也不喜欢断点调试. 总结一点:认真看报错和日志!然后一层一层寻找问题所在. 感觉就像在玩侦探破案游戏一样,找到了问题并且解决是很有成就感的(我并不是QA哈哈) 记录一下自己出的bug 1.数据库 感觉数据库的问题,报错都挺明显的,只不过很长,注意看就行了. {   "isError": true,   "message": "\n### Error updatin

flask笔记:8:修复BUG

寻找一下程序中的BUG 首先看一下数据库里拥有两个nickname,john,Susan 登入项目,用john用户进入,然后将john用户名修改成Susan,会发现报错 为什么会报错呢? 报错信息: IntegrityError: (sqlite3.IntegrityError) column nickname is not unique [SQL: u'UPDATE user SET nickname=?, about_me=? WHERE user.id = ?'] [parameters: