[SOLVED] Docker nginx + node.js + 502 (только через nginx)
myaucher 15 декабря, 2017 - 19:17
Добрый день.
Сначала ситуация:
1) Все в докере (nginx) (нода)
2) в nginx proxy_pass http://127.0.0.1:3000
Если отправлять запросы напрямую в ноду - то ошибок нет.
Есть отправлять запросы в nginx переодически ловлю 502. ошибок на ноде не вижу.
Посмотрел strace nginx:
connect(39, {sa_family=AF_INET, sin_port=htons(3000), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EADDRNOTAVAIL (Cannot assign requested address) gettid() = 7 write(4, "2017/12/15 12:23:30 [crit] 7#7: "..., 661) = 661 close(39) = 0 writev(34, [{"HTTP/1.1 502 Bad Gateway\r\nServer"..., 191}, {"<html>\r\n<head><title>502 Bad Gat"..., 120}, {"<hr><center>nginx/1.10.1</center"..., 53}, {"<!— a padding to disable MSIE a"..., 402}], 4) = 766 shutdown(34, SHUT_WR) = 0
Сеть в докере host
Любая идея.
»
- Для комментирования войдите или зарегистрируйтесь
strace ниочОм,
strace ниочОм, выхлопы
/var/log/nginx/error.log
покажут?
2017/12/15 15:20:53 [crit]
2017/12/15 15:20:53 [crit] 14#14: *6362974 connect() to 127.0.0.1:3000 failed (99: Address not available) while connecting to upstream,
меня вот как раз смущает
меня вот как раз смущает EADDRNOTAVAIL
В этот же самый момент я отправляю запросы в ноду напрямую без проблем напрямую. прям в 3000 порт.
Я бы понял тормоза , 504. Но тут - я в тупике и куда двигаться не знаю.
/
Если сервер под нагрузкой (не обязательно
nginx
), то можно прорицать увлекательнейший квест с системными ограничениями (начиная с количества портов).В общесистемных журналах (+
kernel.log
) что-нибудь интересное есть?:wq
--
Live free or die
Я вроде разобрался. По
Я вроде разобрался.
По нагрузкой.
Вы правы, но в логах на тему упираний в лимиты пусто (это уже отдельный вопрос)
В итоге решилось тем что увеличил ip_local_port_range.
Но вот почему в логах тихо - вопрос конечно.
Там характер нагрузки - много коротких атомарных запросов (стата)
# netstat -anp | grep ESTA | wc -l
195
# netstat -anp | grep WAIT | wc -l
54054
.
Есть мнение, тебе может пригодиться как минимум:
Ну и таймаутами поиграться тоже скорее всего будет нелишне.
:wq
--
Live free or die
Последний раз когда я игрался
Последний раз когда я игрался я так и не научился видимо правильно готовить reuse и recycle и чаще с ними выхватывал проблем в виде рандомой невозможности вообще установить соединение. Но это видимо мои кривые руки. Если есть опыт использования у вас - поделитесь результатами.
.
Когда (на какой версии ядра) и где (в смысле конфигурации ядра) это было?
С какими симптомами (возвращаемся к вышеподразумевавшейся задачи настройки подсистемы журналирования)?
:wq
--
Live free or die
еще на 2.6 на RH6 )) Согласен
еще на 2.6 на RH6 ))
Согласен с тем что попробовать имеет смысл )
.
На RH6 было ядро 2.4!
Не стоит путать с RHEL6 ☺
:wq
--
Live free or die
конечно rhel
конечно rhel
таймауты выкрученны. Тут
таймауты выкрученны. Тут вопросов нет.
?
Так ли уж нет?
Принцип составления перечня изменяемых параметров?
Умолчательные значения?
Текущие?
Методика (или критерий) определения оптимальных значений?
:wq
--
Live free or die
Давайте обсудим. Всегда рад
Давайте обсудим. Всегда рад узнать что то новое и получить дельный совет.
Это то что менялось.
Сервер приема статистики. Запросов - много но они мелкие и с огромного количества src. Почти как flood.
Основная проблема была в time_wait и коннтрак. Табличка забивалась.
Но вообще есть мысль избавится от коннтрака. Его требует докер - но это не проблема в принципе. Сеть managed мы нигде не используем практически или имеем возможность отказаться от её использования. При тормозах на сети забивался коннтрак и ловил dropping packet. Из за этого такой большой размер таблицы (память не проблема).
Забыл сказать
Забыл сказать спасибо.
Спасибо!
ЧаВо?
https://www.gentoo.ru/content/chto-eto-znachit-solved-resheno
:wq
--
Live free or die