我们有一个进程挂起,并且桁架显示它也尝试连接但失败并且错误ECONNREFUSED。 手册页说明了以下内容,但为什么它一次又一次遭到拒绝?
ECONNREFUSED The attempt to connect was force-
fully rejected. The calling program
should close(2) the socket descrip-
tor, and issue another
socket(3SOCKET) call to obtain a new
descriptor before attempting another
connect() call.
truss -p 2145
/ 3:lwp_park(0x00000000,0)(睡觉......)
/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)(睡觉......)
/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)= 0
/ 2:so_socket(PF_INET,SOCK_STREAM,IPPROTO_TCP,“”,SOV_DEFAULT)= 17
/ 2:fcntl(17,F_SETFD,0x00000001)= 0
/ 2:connect(17,0xFFFFFFFF7B5FBF40,16,SOV_DEFAULT)Err#146 ECONNREFUSED
/ 2:关闭(17)= 0
/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)(睡觉......)
/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)= 0
/ 2:so_socket(PF_INET,SOCK_STREAM,IPPROTO_TCP,“”,SOV_DEFAULT)= 17
/ 2:fcntl(17,F_SETFD,0x00000001)= 0
/ 2:connect(17,0xFFFFFFFF7B5FBF40,16,SOV_DEFAULT)Err#146 ECONNREFUSED
/ 2:关闭(17)= 0
/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)(睡觉......)
答案 0 :(得分:2)
它有时可以从这台机器运行然后开始失败,还是每次都返回错误?它是从某些机器而不是其他机器上运行的吗?
服务器程序可能已经崩溃或关闭了侦听套接字。在服务器上尝试“netstat -af inet
”以确保该端口上存在处于LISTEN状态的套接字,并检查该端口上的当前连接数。服务器进程ID上的Solaris命令“pfiles
pid ”也可用于验证服务器是否仍然打开侦听套接字,并检查当前的客户端连接数。如果正在建立许多连接,请确保listen()
积压已足够。在客户端上的-vall
命令中添加truss
选项,以显示连接的地址和端口,以确保它们正确无误。还可以尝试从服务器计算机进行相同的连接,以排除任何网络,防火墙或NAT问题。
答案 1 :(得分:0)
防火墙也许?有很多潜在的原因。