永发信息网

求助,UN3.6出现服务器进入问题

答案:2  悬赏:60  手机版
解决时间 2021-03-22 10:33
求助,UN3.6出现服务器进入问题
最佳答案
您好,这个问题不是那么直观并且也很难发现,因为第一感觉是,他看起来像是一个平常的死锁或者内存泄露bug。
假如你开发了你的服务器,他也能工作的很好。 当你对他进行压力测试时, 他突然挂起了。
如果你比较幸运,你可以发现他是与WSAENOBUGS 错误相关的。
每次重叠发送或者接受操作时,被提交的数据buffer都是有可能被锁住的。 当内存锁住时,他就不能被换页到物理内存外。
一个操作系统限制了可以被锁住的内存大小。 当超出了限制时,重叠操作就会因WSAENOBUGS 错误失败。
如果一个服务器在每个连接上进行了许多Overlapped接收,随着连接数量的增加,我们就可能达到这个限制。如果一个服务器希望处理非常大的突发用户,服务器POST可以从每个链接上接收到0字节的数据,因为已经没有buffer
与接收操作关联了,没有内存需要被锁住了。使用这种方式,每个socket的接收buffer应该被保持完整因为一旦0字节的接收操作完成,服务器可以简单的进行非阻塞的接收去获取socket
接收buffer中的所有缓存数据。当非阻塞因为WSAWOULDBLOCK错误失败时,这里就不再会有被挂起的数据了。这种设计可以用于那种需要最大可能的处理突发访问链接,这是以牺牲吞吐量作为代价的。当然,你对客户端如何与服务器端进行交互知道的越多越好。在前一个例子中,一个非阻塞的Receive将会在0字节接收完成后马上进行以便去取得缓存的数据。如果服务器知道客户端突然发送了很多数据,那么在接收
0字节数据的Receive完成后,他应该POST一个或者多个Overlapped
Reveives以便接收客户端发送的一些数据(大于每个socket接收buffer的最大缓冲buffer,默认是8k)。
一个针对WSAENOBUFFERS错误问题的简单而实际的解决方式在源代码中已经提供了。我们进行一个使用0字节Buffer的异步WSARead(…)(请查看OnZeroByteRead(…))。当这个调用完成后,我们知道在TCP/IP栈中存在数据,然后我们使用大小为MAXIMUMPACKAGE
buffer进行几个异步的WSARead。
这种解决方法只是在有数据来到时才锁住物理内存,这样可以解决WSAENOBUFS问题。但是这种解决方式会降低服务器的吞吐量。
全部回答
我是来看评论的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小马宝莉第几部第几集碧琪的妹妹玉琪派出现
填空题多项式5x3y-y4+2xy2-x4是________次___
汕头市潮阳区关埠镇福仓社区居民委员会在什么
八一对战友的祝福,对老师的祝福语
梦幻西游将军令如果一个号绑定了2个或者多个
独脚金不和那些中药同煮
iac蚁群传播到底是真的还是假的
ppt结束语怎么说
单选题下列各组句子,没有语病的一组是()A.
天府新区华星艺术学校这个地址在什么地方,我
写团结的名言,有关团结的事例和名言
骑安摩托车套装雨衣和一来摩托车套装雨衣哪个
我姥爷去世了!可是我妈妈都没回去 我需要回
求歌,要好听的,不要爱来爱去的
单选题加粗的熟语使用错误的一项A.孙中山明白
推荐资讯
雅漾舒护活泉水可以当爽肤水使用吗?谢谢了,
辽宁营口大石桥兴隆岗,从南向北开右转拍照闯
求真爱如血百度云
男生发型 现在头发长了一些,想烫头发,怎么做
我现在要和一个女孩表白,需要一段表白的话,
喝完啤酒难受怎么办
月经期紫癜会加重吗?
下列对文章内容分析有误的一项是A.《在山的那
王老吉业务员怎么样?公司正编的编制时怎么弄
阿迪运动鞋的唯美句子,描写千日红的句子
请问行人从前方客车车头横穿马路,与后方超车
想起一个带粥和面的餐馆名字
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?