我正在实施一个受此示例启发的简化的静态Web服务器:
https://github.com/young2code/IOCP/blob/master/IOCP%20-%20NewThreadPool/Server/Server.cpp
问题是在LAN或同一台机器上WSASend不能超过2 Mbit / s。 WSARecv没有此限制。套接字未被修改,Nagle已启用。 以下是我在Chrome上执行的测试以及Windows 8.1 64位上的一个活动连接:
这是一个拥堵问题吗? tcp窗口不正确? 为了获得最佳性能,应该在不等待之前的帖子通知的情况下同时发布多少个数据包?
实测值。每当新数据包准备好从输出FIFO发送时,就会有一个事件唤醒一个线程。错误是某些事件同时发出信号,因此它们被合并,并且根据需要不经常调用WSASend。
在使用16KB数据包通知之前建议的同时调用WSASend的建议将非常有用。