100分!求服务器压力的解决方案

Zanvimocvy 2014-05-26 06:55:09
现在做游戏测试(页游):
发现登录的玩家多了后,服务器压力过大,主要是收到的请求太多(请求都是放在消息队列里),然后就处理不过来了,所以后面的请求,玩家也收不到。后面准备登录的玩家也登录不上,老是卡在登录界面,而前面已经登录的玩家在游戏中也没有响应了。程序采用的是socket连接。请问有什么解决方案,或好的测试方法。请大家多指教急!急!急!
...全文
824 38 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zanvimocvy 2016-07-27
  • 打赏
  • 举报
回复
我勒个去,明明每个人给了分,怎么只有第一个人有
Zanvimocvy 2016-07-27
  • 打赏
  • 举报
回复
散分了
showjim 2014-06-03
  • 打赏
  • 举报
回复
内存,CPU,IO(硬盘/带宽)其中某一项瓶颈了? 如果存在瓶颈,那就要该业务逻辑或者扩展机器了。 如果都有空闲,那就要找到哪里阻塞了。
引用 30 楼 goodhtml 的回复:
分服务器确实会好点,但我们的服务器配置还是挺不错的,是程序崩溃了,主要是程序处理不过来。
不要简单的一句崩溃,崩溃了说明有BUG啊。
引用 15 楼 goodhtml 的回复:
发生战斗时,每个玩家同时有几百条在进行推送,推送消息用到的是多线程。我们在测试的过程中发现,消息队列中的消息没有推送完,所以导致以上出现的种种问题。
什么叫同时?几百条/s?统计过每秒服务器处理消息数量吗?
Zanvimocvy 2014-06-03
  • 打赏
  • 举报
回复
引用 31 楼 jimil 的回复:
资料太少,不好做出具体的判断,大家都是狂猜,不过资料一多,估计也没人会看得下去。 我怀疑是不是你的战斗计算过于复杂,导致线程池使用了太多的资源,形成队列拥堵,然后就越来越慢,最后暴了,当然,也不排除是有人找到复杂点的恶意攻击,但也应该是变卡,而不是直接无响应了。 其实,像这种很容易解决,第一,自己模拟个500线程去战斗登陆或是其它什么,其二,你应该有特殊字符记录吧?比如ATT表示战斗什么的,login表示登陆,view_j表示查看交易所,你再把开始和结束时间一同记录,然后分析一下就很明了哪块。
你说的有道理
Zanvimocvy 2014-05-29
  • 打赏
  • 举报
回复
引用 29 楼 moonwrite 的回复:
希望能给你到启发 http://kb.cnblogs.com/page/207824/ 当然这是网站的~ 登录界面一个服务器~ 聊天一个服务器~ 其他的按地图分到不同的服务器~
分服务器确实会好点,但我们的服务器配置还是挺不错的,是程序崩溃了,主要是程序处理不过来。
xiaoyuehen 2014-05-29
  • 打赏
  • 举报
回复
每个玩家同时有几百条在进行推送 --- 看看能不能先把这个设计改一改
md5e 2014-05-29
  • 打赏
  • 举报
回复
找你们公司的架构师处理吧,不是技术层面就能够解决的问题
kitinglei 2014-05-29
  • 打赏
  • 举报
回复
跟我现在做这个东西架构一样,不过我的还在开发中。头痛啊。 我现在是发送信息,等服务端接收完数据后就断开,把数据存入队列,等服务端处理完后再连接发送请求的客户端返回。
jimil 2014-05-29
  • 打赏
  • 举报
回复
资料太少,不好做出具体的判断,大家都是狂猜,不过资料一多,估计也没人会看得下去。 我怀疑是不是你的战斗计算过于复杂,导致线程池使用了太多的资源,形成队列拥堵,然后就越来越慢,最后暴了,当然,也不排除是有人找到复杂点的恶意攻击,但也应该是变卡,而不是直接无响应了。 其实,像这种很容易解决,第一,自己模拟个500线程去战斗登陆或是其它什么,其二,你应该有特殊字符记录吧?比如ATT表示战斗什么的,login表示登陆,view_j表示查看交易所,你再把开始和结束时间一同记录,然后分析一下就很明了哪块。
moonwrite 2014-05-28
  • 打赏
  • 举报
回复
希望能给你到启发 http://kb.cnblogs.com/page/207824/ 当然这是网站的~ 登录界面一个服务器~ 聊天一个服务器~ 其他的按地图分到不同的服务器~
Zanvimocvy 2014-05-28
  • 打赏
  • 举报
回复
引用 25 楼 a82344626 的回复:
页游的话不需要用socket连接呀 socket的话是长连接 用HTTP就行了 操作一次请求一次~
用http更差
rtdb 2014-05-27
  • 打赏
  • 举报
回复
按理说队列模式的话,就不应该全局无响应的, 多半是什么地方死锁了
jiaoshiyao 2014-05-27
  • 打赏
  • 举报
回复
我知道你现在项目的队列 是怎么写的
Zanvimocvy 2014-05-27
  • 打赏
  • 举报
回复
引用 16 楼 jiaoshiyao 的回复:
你改一下列队 测试一下 别给弄坏了 就行 要不然被开 别找我
改队列的话,要往哪方面改?
jiaoshiyao 2014-05-27
  • 打赏
  • 举报
回复
你改一下列队 测试一下 别给弄坏了 就行 要不然被开 别找我
黑子大哥 2014-05-27
  • 打赏
  • 举报
回复
全局无响应了!!会不会死锁了?
a82344626 2014-05-27
  • 打赏
  • 举报
回复
页游的话不需要用socket连接呀 socket的话是长连接 用HTTP就行了 操作一次请求一次~
MoonAndWolf 2014-05-27
  • 打赏
  • 举报
回复
没研究过,看看大牛们的讨论,帮你顶一下
Zanvimocvy 2014-05-27
  • 打赏
  • 举报
回复
引用 20 楼 sd530842780 的回复:
楼上所言有道理啊,建议楼主模拟大量用户进行登录和战斗操作,然后记录上锁和解锁地址和次数。 你说的登录和战斗不是用的同一个队列,那肯定是线程在满负载工作啊,看看线程有没有可以改进的地方。
好的,看看再说
Zanvimocvy 2014-05-27
  • 打赏
  • 举报
回复
引用 19 楼 rtdb 的回复:
按理说队列模式的话,就不应该全局无响应的, 多半是什么地方死锁了
队列模式,为什么不会全局无响应
加载更多回复(16)

111,088

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧