[OmniOS-discuss] [developer] How to release reserved TCP port binding in BOUND state

Marcel Telka marcel at telka.sk
Mon Nov 3 21:50:21 UTC 2014


Hi Youzhong,

On Mon, Nov 03, 2014 at 04:14:55PM -0500, Youzhong Yang via illumos-developer wrote:
> Hello,
> 
> We are having a very strange issue on one of servers. The issue is that
> fcntl locking over NFS returns 'no locks available' immediately.
> 
> dtrace shows that bindresvport() returns error code 125 (EADDRINUSE):
> 
> # dtrace -n 'fbt:rpcmod:bindresvport:return /arg1 != 0/ {stack();
> printf("ret = %d", arg1);}'
>   9  52692              bindresvport:return
>               rpcmod`connmgr_get+0x560
>               rpcmod`connmgr_wrapget+0x63
>               rpcmod`clnt_cots_kcallit+0x198
>               rpcmod`rpcbind_getaddr+0x245
>               klmmod`update_host_rpcbinding+0x4f
>               klmmod`nlm_host_get_rpc+0x6d
>               klmmod`nlm_do_lock+0x10d
>               klmmod`nlm4_lock_4_svc+0x2a
>               klmmod`nlm_dispatch+0xe6
>               klmmod`nlm_prog_4+0x34
>               rpcmod`svc_getreq+0x1c1
>               rpcmod`svc_run+0x146
>               rpcmod`svc_do_run+0x8e
>               nfs`nfssys+0xf1
>               unix`_sys_sysenter_post_swapgs+0x149
> ret = 125
> 
> netstat shows that 501 reserved ports are in BOUND state:
> 
> # netstat -an | grep BOUND
>       *.935                *.*                0      0 1049740      0 BOUND
>       *.801                *.*                0      0 1049740      0 BOUND
>       *.798                *.*                0      0 1049740      0 BOUND
>       *.561                *.*                0      0 1049740      0 BOUND
>       *.613                *.*                0      0 1049740      0 BOUND
>       ....
> # netstat -an | grep BOUND | wc -l
>      501
> 
> Has anyone seen this similar issue? is it possible to unbind those reserved
> ports? Rebooting the server is our last resort.
> 
> Any advice would be very much appreciated.

I faced similar issue in connmgr_get().  It is filed as #1616 and the problem
is that the dead connection is not properly closed (there seems to be missing
connmgr_cancelconn() call somewhere), so the client could properly reconnect.
Unfortunately, I had no time to finish the analysis of this bug.


HTH

-- 
+-------------------------------------------+
| Marcel Telka   e-mail:   marcel at telka.sk  |
|                homepage: http://telka.sk/ |
|                jabber:   marcel at jabber.sk |
+-------------------------------------------+


More information about the OmniOS-discuss mailing list