2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Redisがコネクションタイムアウトした話

Posted at

環境情報

OS: CentOS Linux release 7.5.1804 (Core)
Redis : 2.6.5

きっかけ

mattermost + hubotの構成でチャットボットを作成して
coffeescriptをいじっていた時に、突然以下のようなメッセージが
出現した。

[Fri May 18 2018 11:02:22 GMT+0900 (JST)] ERROR Error: Redis connection in broken state: connection timeout exceeded.
at RedisClient.connection_gone (/home/matter-bot/node_modules/redis/index.js:645:19)
at RedisClient.on_error (/home/matter-bot/node_modules/redis/index.js:406:10)
at Socket. (/home/matter-bot/node_modules/redis/index.js:280:14)
at Socket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)

原因

原因となったソースの箇所はここ。
ソース名:redis/index.js

this.connect_timeout = +options.connect_timeout || 3600000; // 60 * 60 * 1000 ms

周りのコメントや処理を見る限り、どうやら1時間までは再接続をするが、
それを超えると接続を切るらしい。

対処

個人の環境なので、以下の通り修正。
this.connect_timeout = +options.connect_timeout;

ちなみに、options.connect_timeoutはfalseが指定されているので、
timeoutしないようになるはず。

#結果
一応、不具合なく動いており、タイムアウトも発生していないですが、
こんな雑な修正は個人レベルのみにとどめておきたいなぁ。。。
たぶん、負荷とかメモリ消費とかがすごいことになりそう。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?