Обратите внимание на устранение неполадок, связанных с переполнением соединения Redis.
Адрес статьи:Блог.Park Ruiqing.com / 15.12.2019 / ...
Проект не работает!
... проект не может снова встать!
... И двойной ??? !!!
На прошлой неделе я часто слышал, как коллеги в Группе заявили, что проект был повешен, а РЕДИС не мог подключиться. Автор был занят разработкой новых потребностей в другой нормальной среде. (PS: В любом случае, моя среда) Использование ('థ 4 థ) Σ, позвольте мне поговорить обо мне снова).
Итак, посмотрел лог, количество подключений тоже... Эммм, а я бы помог коллеге с верхним пределом количества подключений в конфигурации Redis.Если проблема будет проверена, то скажу.
ERR max number of clients reached
Наконец... люди, которые должны прийти, не могут убежать, окружающая среда, которую я использую, тоже нарушена, и она необъяснимо холодная.
Но... Инфлюкс Стинг!
Изменение верхнего предела количества подключений является средством устранения симптомов, а не основной причины.Первоначальный верхний предел количества подключений10000
, Всего микросервисов всего несколько десятков, и понятно, что их вообще нельзя израсходовать.
Должен быть кто-то, кто не закрыл соединение, проверьте его.
Известный:
- После перезапуска службы Redis соединение через некоторое время будет заполнено.
- Всего сервисов десятки, и настроенное количество подключений в 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
...
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
,Эм...служба группы ПЯ(тон) по соседству.Приходи,горшок тебе дан.
Если эта статья была вам полезна, ставьте лайк ( ̄▽ ̄)"
Рекомендуемое чтение
- Душевная пытка часто задаваемыми вопросами на собеседовании в MySQL
- Как заблокировать опасные IP-адреса в режиме реального времени через журналы Nginx
- Сервер нон-стоп!Как мигрировать данные
- Как научиться программировать
- Практика открытия шлюза API (1) — проектирование шлюза API
- Практика Open API Gateway (2) — Повтор атаки и защита
- Kubernetes (1) Следуйте официальной документации, чтобы собрать K8S с нуля.
Добро пожаловать в публичный аккаунт (код как поэзия)
Эта статья была опубликована вБлог Пак Жуцин, перепечатка для некоммерческого использования разрешена, но перепечатка должна сохранить оригинального автораПарк Жуйцини ссылка:blog.piaoruiqing.com. Если есть какие-либо переговоры или сотрудничество с точки зрения авторизации, пожалуйста, свяжитесь с адресом электронной почты:piaoruiqing@gmail.com.