0

I am trying to insert 10000 records in redis from erlang using gen_server. However, i get following exception

exception exit: {connection_error,{connection_error,eaddrnotavail}}

Note:-

  • Ports range on redis server is sufficient
  • Redis is configured to accept 10000 connections at once
  • I also tried using timer:sleep to rule out the possibility of connections are getting full.
  • I am starting connection , firing query and closing connection immediately
  • Call from gen_server to redis is synchronous
  • I am using eredis as a library
  • I get this error approximately 200 to 500 insertions in redis
4

2 に答える 2

2

うまくいきました:)他の人を助けることができるように回答を投稿しています...

問題はカーネルの TIME_WAIT でした。

Eredis は gen_tcp を使用しており、高速ネットワーク内にいて 10000 の接続を生成していたため、接続の多くは TIME_WAIT 状態にあり、erdis は resuse addr を true に使用していたので、コードで接続を閉じましたが、OS は TIME_WAIT 状態のポートでしたerlang は再びそのポートに接続しようとしていました。

于 2013-07-12T07:27:04.900 に答える
1

投稿していただきありがとうございます。私の変更点もいくつか投稿します。

から edis.hrl を変更します

-define(SOCKET_OPTS, [binary, {active, once}, {packet, raw}, {reuseaddr, true}])。

-define(SOCKET_OPTS, [binary, {active, once}, {packet, raw}, {reuseaddr, false}]))。

于 2014-10-23T07:31:58.657 に答える