服务器性能瓶颈定位-服务器卡实例解决
2012-01-18 16:02
232 查看
前言:
计算机是一个多层的结构,计算机领域的好多问题是通过增加一层中间层还解决,悲剧的是这样上层发生问题得时候,没有头绪的时候,我们得通过了解底层,熟悉底层来定位和解决,或许这也是成长为nb程序员的道路吧.
问题:
服务器抽象后架构如上:
12月份底我们的游戏服务器出现了卡的情况,
服务器在某个时间点全区出现卡,表现为客户端的人物不动,npc不动,
但是服务器的cpu和内存资源占用都很低.
分析:
第一阶段: 定位为网关的问题
定位方式: 游戏客户端设置了ping指令, 记录了客户端到每个服务器一个来回的时间,而且在服务器内部收到消息的时候打了日志
出现卡现象的时候网关发消息到逻辑服务器,到收到逻辑服务器的消息时间时间没多少延时
但是用户收到ping消息的延时很长,初步定为了网关的出现了卡的情况.
对比了网关服务器最近提交的代码,发现有增加读写锁的情况,写了测试代码,发现多线程情况下有时候开销很大
具体这边
修改了相关代码
第二阶段:继续优化代码
上面的问题提交了,问题没有得到解决,当时就没有方向了
猜测可能是逻辑瞬间发送的消息很多,导致网关处理不过来,另外生成图形验证码耗时,可能导致消息的堆积
屏蔽了相关代码,继续观察
第三阶段: tcpdump定位问题
通过抓包分析网关和客户端直接通讯的情况,详细这边
问题定位为客户端到服务器的这条线出问题,最后发现是客户端在网络卡的情况下,会超量发包,网络越卡发包越多
服务器socket接受缓冲区被占满,问题得到了解决.
总结mark下,借助优秀的工具,能让我们更好的定位分析问题,还是要多学习啊
tcpdump的使用
计算机是一个多层的结构,计算机领域的好多问题是通过增加一层中间层还解决,悲剧的是这样上层发生问题得时候,没有头绪的时候,我们得通过了解底层,熟悉底层来定位和解决,或许这也是成长为nb程序员的道路吧.
问题:
服务器抽象后架构如上:
12月份底我们的游戏服务器出现了卡的情况,
服务器在某个时间点全区出现卡,表现为客户端的人物不动,npc不动,
但是服务器的cpu和内存资源占用都很低.
分析:
第一阶段: 定位为网关的问题
定位方式: 游戏客户端设置了ping指令, 记录了客户端到每个服务器一个来回的时间,而且在服务器内部收到消息的时候打了日志
出现卡现象的时候网关发消息到逻辑服务器,到收到逻辑服务器的消息时间时间没多少延时
但是用户收到ping消息的延时很长,初步定为了网关的出现了卡的情况.
对比了网关服务器最近提交的代码,发现有增加读写锁的情况,写了测试代码,发现多线程情况下有时候开销很大
具体这边
修改了相关代码
第二阶段:继续优化代码
上面的问题提交了,问题没有得到解决,当时就没有方向了
猜测可能是逻辑瞬间发送的消息很多,导致网关处理不过来,另外生成图形验证码耗时,可能导致消息的堆积
屏蔽了相关代码,继续观察
第三阶段: tcpdump定位问题
通过抓包分析网关和客户端直接通讯的情况,详细这边
问题定位为客户端到服务器的这条线出问题,最后发现是客户端在网络卡的情况下,会超量发包,网络越卡发包越多
服务器socket接受缓冲区被占满,问题得到了解决.
总结mark下,借助优秀的工具,能让我们更好的定位分析问题,还是要多学习啊
tcpdump的使用
相关文章推荐
- SqlMetal 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误 (error: 26 - 定位指定的服务器/实例时出错) SQL SERVER 2008解决办法
- 实例解析MySQL性能瓶颈排查定位
- MySQL性能瓶颈排查定位实例详解
- 解决 error:26 - 定位指定的服务器/实例时出错!
- SQL2008 SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错解决方法
- 优化 | 实例解析MySQL性能瓶颈排查定位
- MySQL性能瓶颈排查定位实例详解
- 实例解析MySQL性能瓶颈排查定位
- 解决SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错
- (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) 问题解决啦 O(∩_∩)O哈哈~
- 实例解析MySQL性能瓶颈排查定位
- 服务器性能瓶颈定位-网络
- provider:SQL Network Interfaces,error:26 - 定位指定的服务器/实例时出错--错误原因及解决办法
- SQL Server Database在C#编程下遇到的问题:“provider:SQL Network Interfaces,error:26-定位指定的服务器/实例时出错”的解决办法
- (原创)性能测试中,Oracle服务器定位CPU使用率高的瓶颈(SQL)
- 关于连接SQL 2005 出错: provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错 的解决方法
- 优化系列 | 实例解析MySQL性能瓶颈排查定位
- 五步定位性能瓶颈
- LoadRunner负载测试之Windows常见性能计数器,分析服务器性能瓶颈(二)
- 服务器系统性能瓶颈和优化