假如你开发了你的服务器,他也能工作的很好。 当你对他进行压力测试时, 他突然挂起了。
如果你比较幸运,你可以发现他是与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问题。但是这种解决方式会降低服务器的吞吐量。
首先,轻松掌柜进销存软件打开的时候,需要打开轻松掌柜服务器。您先双击桌面的橙色图标 ;双击后 桌面的右下角是否有这个橙色的图标出现 。 出现后 再双击桌面蓝色的图标;帐套默认为 演示帐套;用户列表 下拉箭头 点击 选择超级用户。密码 空
如果服务器打不开,就没法进入软件的,如果还有问题,可以直接上他们的官网,有专门的在线客服解答的,或者直接电话咨询也可以,免费的
去Steam蒸汽动力,那里你可要获得帮助。对了告诉你一个steam的机制,如果你要加好友或者使用市场交易功能之类的,你必须要在Steam上购买游戏超过5美元及以上,这样你所有的Steam权限都会解锁,市场交易功能,要在开通后的15天或者30天后才会解锁欢迎分享,转载请注明来源:夏雨云
评论列表(0条)