Boost asio 异步连接挂起在套接字上\u操作::在套接字中接受\u选择\u中断器::打开\u描述符

Boost asio 异步连接挂起在套接字上\u操作::在套接字中接受\u选择\u中断器::打开\u描述符,boost-asio,Boost Asio,运行多个套接字的客户端-服务器应用程序的Clent端在负载下挂起。分析显示挂在async_connect上的一个通信线程具有以下堆栈跟踪: ntdll.dll!ZwWaitForSingleObject() + 0xa bytes mswsock.dll!SockWaitForSingleObject() + 0x13c bytes mswsock.dll!WSPAccept() + 0x2a3a bytes ws2_32.dll!WSAAccept() + 0xaf by

运行多个套接字的客户端-服务器应用程序的Clent端在负载下挂起。分析显示挂在async_connect上的一个通信线程具有以下堆栈跟踪:

ntdll.dll!ZwWaitForSingleObject()  + 0xa bytes  
mswsock.dll!SockWaitForSingleObject()  + 0x13c bytes    
mswsock.dll!WSPAccept()  + 0x2a3a bytes 
ws2_32.dll!WSAAccept()  + 0xaf bytes    
ws2_32.dll!accept()  + 0x12 bytes   
boost::asio::detail::socket_select_interrupter::open_descriptors()  Line 88 + 0x31 bytes    C++
boost::asio::detail::select_reactor::select_reactor(boost::asio::io_service & io_service={...})  Line 47 + 0x90 bytes   C++
boost::asio::detail::service_registry::create<boost::asio::detail::select_reactor>(boost::asio::io_service & owner={...})  Line 81 + 0x1f bytes C++
boost::asio::detail::service_registry::do_use_service(const boost::asio::io_service::service::key & key={...}, boost::asio::io_service::service * (boost::asio::io_service &)* factory=0x0000000036cbdda8)  Line 123 + 0x6 bytes    C++
boost::asio::detail::win_iocp_socket_service_base::start_connect_op(boost::asio::detail::win_iocp_socket_service_base::base_implementation_type & impl={...}, boost::asio::detail::reactor_op * op=0x000000002b9cea30, const sockaddr * addr=0x000000002870f5f0, unsigned __int64 addrlen=16)  Line 550 + 0x45 bytes    C++
boost::asio::detail::win_iocp_socket_service<boost::asio::ip::tcp>::async_connect<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand,boost::_bi::bind_t<void,boost::_mfi::mf1<void,Replication::PTCPChannel,boost::system::error_code const & __ptr64>,boost::_bi::list2<boost::_bi::value<boost::shared_ptr<Replication::PTCPChannel> >,boost::arg<1> > > > >(boost::asio::detail::win_iocp_socket_service<boost::asio::ip::tcp>::implementation_type & impl={...}, const boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> & peer_endpoint={...}, boost::asio::detail::wrapped_handler<boost::asio::io_service::strand,boost::_bi::bind_t<void,boost::_mfi::mf1<void,Replication::PTCPChannel,boost::system::error_code const &>,boost::_bi::list2<boost::_bi::value<boost::shared_ptr<Replication::PTCPChannel> >,boost::arg<1> > > > * handler=0x000000002b9cea30)  Line 497  C++
boost::asio::stream_socket_service<boost::asio::ip::tcp>::async_connect<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand,boost::_bi::bind_t<void,boost::_mfi::mf1<void,Replication::PTCPChannel,boost::system::error_code const & __ptr64>,boost::_bi::list2<boost::_bi::value<boost::shared_ptr<Replication::PTCPChannel> >,boost::arg<1> > > > >(boost::asio::detail::win_iocp_socket_service<boost::asio::ip::tcp>::implementation_type & impl={...}, const boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> & peer_endpoint={...}, const boost::asio::detail::wrapped_handler<boost::asio::io_service::strand,boost::_bi::bind_t<void,boost::_mfi::mf1<void,Replication::PTCPChannel,boost::system::error_code const &>,boost::_bi::list2<boost::_bi::value<boost::shared_ptr<Replication::PTCPChannel> >,boost::arg<1> > > > & handler={...})  Line 209   C++
boost::asio::basic_socket<boost::asio::ip::tcp,boost::asio::stream_socket_service<boost::asio::ip::tcp> >::async_connect<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand,boost::_bi::bind_t<void,boost::_mfi::mf1<void,Replication::PTCPChannel,boost::system::error_code const & __ptr64>,boost::_bi::list2<boost::_bi::value<boost::shared_ptr<Replication::PTCPChannel> >,boost::arg<1> > > > >(const boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> & peer_endpoint={...}, const boost::asio::detail::wrapped_handler<boost::asio::io_service::strand,boost::_bi::bind_t<void,boost::_mfi::mf1<void,Replication::PTCPChannel,boost::system::error_code const &>,boost::_bi::list2<boost::_bi::value<boost::shared_ptr<Replication::PTCPChannel> >,boost::arg<1> > > > & handler={...})  Line 723    C++
ntdll.dll!ZwWaitForSingleObject()+0xa字节
mswsock.dll!SockWaitForSingleObject()+0x13c字节
mswsock.dll!WSPAccept()+0x2a3a字节
ws2_32.dll!wsaaaccept()+0xaf字节
ws2_32.dll!accept()+0x12字节
Boosi::Asio::细节:SokKyStReltSytBuffter::OpenYMyxRead()行88 +0x31字节C++
Boosi::Asio::细节:SealtTyRe::SealtTyRealPosiver(Boosi::asio:IOIOffService和IoService={}})47 +0x90字节C++
Boosi::Asio::细节:Service EngaseRe::创建(Boosi::asoI:IOIOService和Objuts= {…})81 +0x1f字节C++
BooSeriSql::DoUSEULL服务(const Booo::IOI::IOI:Service::Key and key = {…},Boosi::asIO::IOSservice::Boox*(Boosi::asoI::IOIOffService)*工厂= 0x000 000,36CBDA8)123 +0x6字节C++
C++:AcIO::细节::StistaCopyServices基础::BooS::Asio::细节:BaseIOngultIsPurrasyType和IMPL= {…},Booo::ASIO::细节:ReaTrOrthOP*OP= 0x000 000 02B9CEA30,consSokAdDr*ADDR=0x000 000 000 28 70F5F0,未签名的Ay64 64 AdRLLN=16)行550 +0x45字节C++助推
Boo::AsiCixOn::Abjix:Asio::细节:实现,类型:IMPL= {{}},const Boo:::BasixPotoPosioPosie:PoRyEdPosie}{{ },Boosi::Asio::细节:WrdddHyther-*Huffer-= 0x000,09002B9CEA30)497 C++
AssiCuxIoService::AssiCnxOnService:(Boosi:AsIO::细节:实现,类型:IMPL= {…},const Booo::Asio::Basic SooPosioPosie:PoRyEdPosie= {…},const Booo::Asio:::细节:WrdddH-Hyther-&Healer-= {…})209 C++
Basic SoCult:(const Boo::ASIO::Basic SooPosioPosie:PelrEndoPosie= {…},const Booo::asi:::细节:WrdddHand Hand和Huffer-= {…})723 C++
有人能提出为什么内部插座连接挂起吗?挂起发生在负载测试数小时后,最终会阻塞整个应用程序。 由于这是一个内部套接字(在环回IP上侦听),有人能解释谁应该连接到它以及何时连接吗?asio套接字服务可能连接到环回端口的数量是否存在某种内部限制

在这种情况下,有没有更好的方法关闭挂线


有问题的应用程序是当前在Win2K8R2或Win 2k12 R2上运行的windows应用程序,使用的boost版本是1.54。

防火墙可能会阻止与目标端口的连接吗?这是前面提到的一种可能性

查找maxconnection(对于asp.net,出站限制为2)