[OmniOS-discuss] [developer] How to release reserved TCP port binding in BOUND state
Youzhong Yang
youzhong at gmail.com
Tue Nov 4 18:32:34 UTC 2014
Hi Marcel,
I really appreciate your input. We will try to find out what is wrong in
connmgr_get() which caused port leaking.
In the meantime, we want to change clnt_cots_do_bindresvport from 1 to 0
through mdb so that new connection will start using non-reserved port,
http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/rpc/clnt_cots.c#508
Will dynamically changing this variable have any side effect?
Thanks,
-Youzhong
On Mon, Nov 3, 2014 at 4:50 PM, Marcel Telka <marcel at telka.sk> wrote:
> 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 |
> +-------------------------------------------+
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://omniosce.org/ml-archive/attachments/20141104/24240421/attachment-0001.html>
More information about the OmniOS-discuss
mailing list