求助,UN3.6出现服务器进入问题
答案:2 悬赏:60 手机版
解决时间 2021-03-22 10:33
- 提问者网友:情歌越听越心酸
- 2021-03-21 22:23
求助,UN3.6出现服务器进入问题
最佳答案
- 五星知识达人网友:woshuo
- 2021-03-21 22:34
您好,这个问题不是那么直观并且也很难发现,因为第一感觉是,他看起来像是一个平常的死锁或者内存泄露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问题。但是这种解决方式会降低服务器的吞吐量。
假如你开发了你的服务器,他也能工作的很好。 当你对他进行压力测试时, 他突然挂起了。
如果你比较幸运,你可以发现他是与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问题。但是这种解决方式会降低服务器的吞吐量。
全部回答
- 1楼网友:爱难随人意
- 2021-03-21 23:44
我是来看评论的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯