Мне очень трудно автоматически закрывать клиентские соединения Redis. Скорее всего, это проблема с пакетом redis
:
(https://www.npmjs.com/package/redis)
Redis будет поддерживать соединения до тех пор, пока вы их не закроете или не истечет время ожидания, которое по умолчанию равно бесконечности.
Я знаю об этом:
как убить бездействующих клиентов Redis
И даже до чтения SO я пытался установить конфигурацию timeout
как с помощью файла .conf, так и с помощью командной строки, но ни один из них не работал.
На самом деле происходит очень странно:
Если я запускаю CLIENT LIST
после N секунд:
- Сохраняется такое же количество незанятых подключений.
- Информация о простое клиента перезапускается с 0 (например, если я установил 10 секунд тайм-аута, через 11 секунд информация
idle
равна 1). - Адрес меняется. Номер порта меняется при создании новых подключений, чтобы не потерять этого клиента.
- Клиент фактически подключен к Node. Кажется, это новый процесс узла. Если я оставлю приложение node UP, соединения не прервутся. Если я закрываю приложение, все созданные им соединения закрываются. Таким образом, модуль
redis
, вероятно, «перезапускает» соединение.
Любые идеи о том, что я не должен форсировать «воскрешение» убитого клиента?
Наблюдения: я понимаю, что могу закрыть клиентское соединение с помощью 'quit()', но я должен гарантировать, что он избавится от любого бездействующего клиента, который не был закрыт приложением через некоторое время.