Erlang gen_服务器中引发Redis异常
我正在尝试使用gen_服务器从erlang在redis中插入10000条记录。然而,我得到了以下异常Erlang gen_服务器中引发Redis异常,erlang,redis,Erlang,Redis,我正在尝试使用gen_服务器从erlang在redis中插入10000条记录。然而,我得到了以下异常 exception exit: {connection_error,{connection_error,eaddrnotavail}} 注:- redis服务器上的端口范围足够 Redis配置为一次接受10000个连接 我还尝试使用定时器:睡眠来排除连接已满的可能性 我正在启动连接,启动查询并立即关闭连接 gen_服务器对redis的调用是同步的 我正在使用eredis作为图书馆 我在red
exception exit: {connection_error,{connection_error,eaddrnotavail}}
注:-
- redis服务器上的端口范围足够
- Redis配置为一次接受10000个连接
- 我还尝试使用定时器:睡眠来排除连接已满的可能性
- 我正在启动连接,启动查询并立即关闭连接
- gen_服务器对redis的调用是同步的
- 我正在使用eredis作为图书馆
- 我在redis中得到了大约200到500次插入的错误
- 成功:)发布答案以便帮助他人
问题是内核等待时间
Eredis使用gen_tcp,由于我在fast网络中,生成了10000个连接,许多连接处于TIME_WAIT状态,Eredis使用resuse addr为true,因此尽管我在代码中关闭了连接,但操作系统是处于TIME_WAIT状态的端口,erlang再次尝试连接到该端口 成功了:)发布答案以便帮助他人
问题是内核等待时间
Eredis使用gen_tcp,由于我在fast网络中,生成了10000个连接,许多连接处于TIME_WAIT状态,Eredis使用resuse addr为true,因此尽管我在代码中关闭了连接,但操作系统是处于TIME_WAIT状态的端口,erlang再次尝试连接到该端口 谢谢你的发帖。
张贴我的一些变化以及
将eredis.hrl从
-定义(SOCKET_OPTS,[binary,{active,once},{packet,raw},{reuseaddr,true}])
到
-定义(SOCKET_OPTS,[binary,{active,once},{packet,raw},{reuseaddr,false}])。感谢您的发布。
张贴我的一些变化以及
将eredis.hrl从
-定义(SOCKET_OPTS,[binary,{active,once},{packet,raw},{reuseaddr,true}])
到
-定义(SOCKET_OPTS,[binary,{active,once},{packet,raw},{reuseaddr,false}])