🔥Redis вылетел, мне удалось перекинуть банк следующей группе

Java
🔥Redis вылетел, мне удалось перекинуть банк следующей группе

Обратите внимание на устранение неполадок, связанных с переполнением соединения Redis.

Адрес статьи:Блог.Park Ruiqing.com / 15.12.2019 / ...

Проект не работает!

... проект не может снова встать!

... И двойной ??? !!!

На прошлой неделе я часто слышал, как коллеги в Группе заявили, что проект был повешен, а РЕДИС не мог подключиться. Автор был занят разработкой новых потребностей в другой нормальной среде. (PS: В любом случае, моя среда) Использование ('థ 4 థ) Σ, позвольте мне поговорить обо мне снова).

Итак, посмотрел лог, количество подключений тоже... Эммм, а я бы помог коллеге с верхним пределом количества подключений в конфигурации Redis.Если проблема будет проверена, то скажу.

ERR max number of clients reached

Наконец... люди, которые должны прийти, не могут убежать, окружающая среда, которую я использую, тоже нарушена, и она необъяснимо холодная.

Но... Инфлюкс Стинг!

因吹斯汀

Изменение верхнего предела количества подключений является средством устранения симптомов, а не основной причины.Первоначальный верхний предел количества подключений10000, Всего микросервисов всего несколько десятков, и понятно, что их вообще нельзя израсходовать.

Должен быть кто-то, кто не закрыл соединение, проверьте его.

弄他

Известный:

  1. После перезапуска службы Redis соединение через некоторое время будет заполнено.
  2. Всего сервисов десятки, и настроенное количество подключений в 10 000 вряд ли будет израсходовано в нормальных условиях.

Шаг 1 Перезапустите и прервите соединение

После перезапуска Redis я сразу подключился к Redis и проверил количество клиентов (подключаться было уже поздно):

$ docker exec -it $(docker ps | grep redis | awk '{print $1}') redis-cli -a {pwd}
127.0.0.1:6379> info
...
# Clients
connected_clients:391
...

tips:

Команда info может просматривать различную информацию и статистику о сервере Redis.

Второй шаг — запись всех клиентов

Проверьте еще раз через несколько минут:

127.0.0.1:6379> info
...
# Clients
connected_clients:10002
...

На данный момент связь полностью занята.

谁干的

Сохраните всю информацию о клиенте в файл и приготовьтесь поймать этого братана.

127.0.0.1:6379> client list
id=7863 addr=172.18.0.104:56836 fd=6150 name= age=72 idle=72 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=7864 addr=172.18.0.50:56262 fd=6151 name= age=72 idle=72 flags=N db=9 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=7865 addr=172.18.0.104:56840 fd=6152 name= age=72 idle=72 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
...

client-list

tips:

client list: Список всей информации о клиенте.

Третий шаг - идентифицировать аномалии IP

Имея всю информацию о клиентских подключениях, вы можете узнать, кто является виновником.Используйте команду для вывода пяти первых IP-подключений:

$ cat client-list | awk '{print $2}' | awk -F "[=:]" '{print $2}' | sort | uniq -c | sort -k1,1nr | head -5
5432 172.18.0.50
4244 172.18.0.104
  43 172.18.0.59
  40 172.18.0.54
  32 172.18.0.55

До сих пор заблокирован172.18.0.50и172.18.0.104Два IP, оба являются адресами внутренней сети докера.

tips:

awk '{print $2}: Выходная вторая колонна, то есть IP.addr=172.18.0.104:56836.

awk -F "[=:]" '{print $2}': разрешается знаком равенства и двоеточиемaddr=172.18.0.104:56836и вывести промежуточный IP.

sort: Сортировать.

uniq -c: Количество статистики и количество повторных внешний вид строки отображаются рядом с каждым столбцом.

Шаг 4 Найдите сервиз и бросьте на него горшок

Как только вы получите IP, вы недалеко от цели.docker inspectПримеры вывода может докер, в том числе IP.

$ docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) | grep 172.18.0.50
/docker_xxxxx-service - 172.18.0.50
$ docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) | grep 172.18.0.104
/docker_yyyyy-service - 172.18.0.104

tips:

docker inspect: получить метаданные контейнера/изображения.--format: Форматирование вывода с помощью шаблона.

До сих пор он находитсяxxxxxиyyyyy,Эм...служба группы ПЯ(тон) по соседству.Приходи,горшок тебе дан.

甩锅

Если эта статья была вам полезна, ставьте лайк ( ̄▽ ̄)"

Рекомендуемое чтение

Добро пожаловать в публичный аккаунт (код как поэзия)

代码如诗(poetic_code)
[Уведомление об авторских правах]
Эта статья была опубликована вБлог Пак Жуцин, перепечатка для некоммерческого использования разрешена, но перепечатка должна сохранить оригинального автораПарк Жуйцини ссылка:blog.piaoruiqing.com. Если есть какие-либо переговоры или сотрудничество с точки зрения авторизации, пожалуйста, свяжитесь с адресом электронной почты:piaoruiqing@gmail.com.