我在生产服务器上的情况很奇怪。
我们有使用C++编写的网络应用程序,该应用程序通过使用IOCP编写的TCP满足用户请求。
两天前,我们对Windows 2012 R2进行了更新(它安装了最新的安全更新。以前的更新是6个月前)。在更新之后,当尝试停止服务时,我们在日志中看到服务器挂起以关闭监听套接字
closesocket(session->listen_socket);
接下来是停止网络系统的模式:
PostQueuedCompletionStatus(m_completion_port, 0, NULL, NULL);
x工作线程数
CloseHandle(m_completion_port);
closesocket(session->accept_socket);
closesocket(session->listen_socket);
在过去的四年中,这一直很好,但是在Windows 2012 R2更新后,服务器突然卡在了电话上
closesocket(session->listen_socket);
我也尝试过将LINGER选项设置为0超时以进行无效关闭的解决方案,但这没有帮助。
所有想法如何解决此问题或进行任何其他诊断?
最佳答案
该问题是由Microsoft KB4338815 的补丁程序引起的,该补丁程序导致closesockett®永远卡在Intel Xeon处理器上,FileZilla伙计也在此线程中发布了此问题。
https://forum.filezilla-project.org/viewtopic.php?t=49308