我的广告服务器罢工了?
来源:互联网 发布:淘宝个人店铺假货 编辑:程序博客网 时间:2024/05/16 09:03
刚要下班,运维部门的同事打电话来说,一个广告服务器(UDP服务器)不接收数据了。我跑到他们部门一看,果然。界面上显示接收数据包数量和速度都没有变化了。据他们介绍,以前一直不出这个问题,但现在特别频繁。一般运行10多分钟可能就出问题了。
好事啊,出现故障的频率这么高,找到问题就很easy了。
我申请好权限,登录到服务器上去观察。
是什么原因使服务器不接收数据包了呢?
1.服务器收到的包太多,把底层网络堵塞了?
这种情况在流量上表现应该是下载流量一路上升,到最高点后,突然直线下降,甚至没下载流量了。
可是观看流量监控后,没这种症状。而且运维部的同事说,广告服务器上的流量并不大。
那就不是这个问题了。至少可以先放一边。
2.死锁?
如果接收和处理消息的线程死锁,会接收不到数据的。
但是界面还能动,最主要的是点击界面上的“停止服务”按钮,再开启服务时,它又可以接收数据了。
肯定不是死锁了
3.那就是接收消息的线程不工作了
怎么证明呢?
还好,这个广告服务器是一个UDP服务器,只有一个端口来接收和发送数据
上传一个PE,用它观察了服务器进程的网络信息,发现已经没有UDP服务了,就是 UDP socket被closesocket了。
当我停止服务,再开启服务(进程没退出)时,又看到UDP服务在运行了。
肯定是接收消息的线程循环里处理错误不当,退出了线程。
看了代码后,发现广告服务器是用以前同事写的一个简单UDP框架来处理数据包的。而且发生错误后,只处理了10054这个错误,其他的错误发生时,就退出了消息循环。那要是如果有人破坏或客户端代码的bug,发送了一个比较大的udp数据包,就会发生错误,得到WSAEMSGSIZE错误代码。。。
这样服务器就罢工了。。。
为了验证我的猜想。我在接收和处理消息循环的工作线程中,可能退出的地方都写上了日志。然后放到服务器上去。
可是郁闷的是不接收数据包的症状不发生了,都过了几个小时了。。。
没法,就放着运行吧。。。没事就上去看看。。。。
- 我的广告服务器罢工了?
- 我日了那些发广告的!
- 我的博客又被广告了
- Google罢工了
- MakeFile罢工了?
- TOMCAT 罢工了
- 本本罢工了
- 身体罢工了
- logcat 罢工了
- 我的MNPIC.COM 开始做百度主题广告了
- 今天我的手机广告终于开始有收入了
- chrome 和 safari 广告插件拦截了我的div
- 最近机器又罢工了
- 【Struts】--EL表达式罢工了
- 春节的习惯性罢工
- 春节的习惯性罢工
- 春节的习惯性罢工
- 说服罢工的 Cygwin
- VB 调用系统API 选择文件夹 代码
- 我的CSDN成长历程
- vivi 2 mem
- 世界编程语言排行榜08年03月
- Windows下的C++编程——你过时了么?
- 我的广告服务器罢工了?
- 一段弃暗投明的代码
- 在eclipse中, 如何快速输入(快捷键)System.out.println();
- 解决运行eclipse内存不足的问题
- 世界上最美丽的英文-A Forever Friend
- 世界上最美丽的英文-Love
- C#的四种排序算法
- 系统开发之需求分析--心得体会(一)
- 立足现实 与时俱进:C++ 1991-2006