- Почему Nginx перестал отправлять запросы upstream серверу после огромной нагрузки?
- Почем php-fpm не работает ни через сокеты, ни через tcp?
- Почему не работает перенаправление в контейнер из nginx?
- Как отследить причину ошибки upstream timed out в Nginx?
- upstream timed out 110 connection timed out в Nginx
Почему Nginx перестал отправлять запросы upstream серверу после огромной нагрузки?
На проекте используется Nginx как распределитель нагрузки. Вот упрощенная конфигурация:
У нас serverA — это ELB, который ссылается на 16 инстансов сервиса в Kubernetes.
В upstream используется один и тот же сервер serverA пять раз. Это сделали до меня как обходной путь, если первый процессинг выпадет с ошибкой или Pod сервиса не доступен, тогда Nginx переключится на следующий бэкап сервер serverA и снова запустит процесс. Эта затычка работает и успешно.
Но, на выходных запускали нагрузочный тест, слали большой объем данных и запросов одновременно, в понедельник заметили много 499 ошибок в логах Nginx (“GET /result/final/id-goes-here HTTP/1.1” 499 0 “-“ “Our Client Name” “-“ “-“ “-“ “-“ “64.587”), а когда начали дергать этот сервис вручную, то заметили, что он отваливается в ручную по таймауту, возвращая Could not get any response страницу в Postman.
Что интересно, это только Nginx тупил возвращать результат, когда запускали запрос напрямую на upstream сервер (ELB), то он возвращал результат. Предположили, что во время большой нагрузки, Nginx пометил все сервера (одинаковые) в upstream как down, и поэтому ничего не возвращал, подвисал на запросе и отваливался на таймауте. Вопросов появилось больше чем ответов.
Кто-то сталкивался с подобным в своей практике? Как решали? Возможно, есть подобные случаи?
Источник
Почем php-fpm не работает ни через сокеты, ни через tcp?
Настраиваю веб-сервер на виртуальной машине virtualbox. Ubuntu server 14.10 + kubuntu desktop + php5-fpm + nginx.
Nginx отдает 502ю ошибку на *.php файлах.
Через сокеты:
Собственно, файл test.sock не создается. Папка создана, права 777, владельцев пробовал любых (root, www-data, user).
Php-fpm не хочет слушать нужный порт. Пробовал 8080, 7777, 7701, 7711, 9000. Iptables не стоит, телнет нужного порта пишет «connection refused», в netstat -nap | grep 8080, lsof -i :8080, lsof -i :8080 и netstat -nltp пусто.
Почему так происходит? Почему php-fpm не создает файл и не хочет слушать порт?
UPD: Снес всю систему, поставил ubuntu-server и xubuntu с нуля, установил nginx+php-fpm и запустил их со стандартными конфигами — на /var/www/html/index.php 502-я ошибка, php-fpm не создает .sock-файл.
UPD 2: В таск-менеджере ситуация следующая: все процессы php5-fpm (php5-fpm-checkconf, php5-fpm —fpm-config /etc/php5/fpm/php-fpm.conf -t, php5-fpm —nodaemonize —fpm-config /etc/php5/fpm/php-fpm.conf) хаотично перезапускаются (каждый процесс живет не больше секунды, запускается и сразу же умирает), всего их штук 5-7.
В чем может быть проблема? Почему процессы сразу же умирают и ничего не пишут в логи? В логах кстати появилось пару ошибок после того как выставил log_level = debug, но они все никак не связаны с проблемой и пропали после фиксов.
UPD 3: Проблема решена установкой php5-fpm другой версии из другого репозитория.
Источник
Почему не работает перенаправление в контейнер из nginx?
Доброго времени суток!
Есть два контейнера в одном nginx в другом redmine.
У редмайна открыт порт и если обращаться напрямую на этот порт из браузера, то всё ок.
Поставил контейнер с nginx.
Создал конфиг:
но при обращении на myhost.ru/test получается 502. При этом в логе самого редмайна обращения к нему нет. Что я сделал не так?
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Host: myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Connection: keep-alive»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Cache-Control: max-age=0»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Upgrade-Insecure-Requests: 1»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Accept-Encoding: gzip, deflate»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4»
2017/09/21 08:23:53 [debug] 5#5: *1 http header: «Cookie: _ym_uid=1496406692314004448»
2017/09/21 08:23:53 [debug] 5#5: *1 http header done
2017/09/21 08:23:53 [debug] 5#5: *1 event timer del: 3: 1505982293410
2017/09/21 08:23:53 [debug] 5#5: *1 generic phase: 0
2017/09/21 08:23:53 [debug] 5#5: *1 rewrite phase: 1
2017/09/21 08:23:53 [debug] 5#5: *1 test location: «/test»
2017/09/21 08:23:53 [debug] 5#5: *1 using configuration «/test»
2017/09/21 08:23:53 [debug] 5#5: *1 http cl:-1 max:1048576
2017/09/21 08:23:53 [debug] 5#5: *1 rewrite phase: 3
2017/09/21 08:23:53 [debug] 5#5: *1 http script regex: «^/test/?([^/]*)»
2017/09/21 08:23:53 [notice] 5#5: *1 «^/test/?([^/]*)» matches «/test», client: 10.80.2.244, server: myhost.ru, request: «GET /test HTTP/1.1», host: «myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «/»
2017/09/21 08:23:53 [debug] 5#5: *1 http script capture: «»
2017/09/21 08:23:53 [debug] 5#5: *1 http script regex end
2017/09/21 08:23:53 [notice] 5#5: *1 rewritten data: «/», args: «», client: 10.80.2.244, server: myhost.ru, request: «GET /test HTTP/1.1», host: «myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 post rewrite phase: 4
2017/09/21 08:23:53 [debug] 5#5: *1 generic phase: 5
2017/09/21 08:23:53 [debug] 5#5: *1 generic phase: 6
2017/09/21 08:23:53 [debug] 5#5: *1 generic phase: 7
2017/09/21 08:23:53 [debug] 5#5: *1 access phase: 8
2017/09/21 08:23:53 [debug] 5#5: *1 access phase: 9
2017/09/21 08:23:53 [debug] 5#5: *1 access phase: 10
2017/09/21 08:23:53 [debug] 5#5: *1 post access phase: 11
2017/09/21 08:23:53 [debug] 5#5: *1 generic phase: 12
2017/09/21 08:23:53 [debug] 5#5: *1 generic phase: 13
2017/09/21 08:23:53 [debug] 5#5: *1 http init upstream, client timer: 0
2017/09/21 08:23:53 [debug] 5#5: *1 epoll add event: fd:3 op:3 ev:80002005
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «Host»
2017/09/21 08:23:53 [debug] 5#5: *1 http script var: «myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «X-Real-IP»
2017/09/21 08:23:53 [debug] 5#5: *1 http script var: «10.80.2.244»
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «X-Forwarded-For»
2017/09/21 08:23:53 [debug] 5#5: *1 http script var: «10.80.2.244»
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «Connection»
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «close»
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «»
2017/09/21 08:23:53 [debug] 5#5: *1 http script copy: «»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header: «Cache-Control: max-age=0»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header: «Upgrade-Insecure-Requests: 1»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header: «User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header: «Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header: «Accept-Encoding: gzip, deflate»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header: «Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header: «Cookie: _ym_uid=1496406692314004448»
2017/09/21 08:23:53 [debug] 5#5: *1 http proxy header:
«GET / HTTP/1.0
Host: myhost.ru
X-Real-IP: 10.80.2.244
X-Forwarded-For: 10.80.2.244
Connection: close
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: _ym_uid=1496406692314004448
»
2017/09/21 08:23:53 [debug] 5#5: *1 http cleanup add: 00005584A18C8258
2017/09/21 08:23:53 [debug] 5#5: *1 get rr peer, try: 2
2017/09/21 08:23:53 [debug] 5#5: *1 get rr peer, current: 00005584A18CDAE0 -1
2017/09/21 08:23:53 [debug] 5#5: *1 stream socket 12
2017/09/21 08:23:53 [debug] 5#5: *1 epoll add connection: fd:12 ev:80002005
2017/09/21 08:23:53 [debug] 5#5: *1 connect to 127.0.0.1:10083, fd:12 #2
2017/09/21 08:23:53 [debug] 5#5: *1 http upstream connect: -2
2017/09/21 08:23:53 [debug] 5#5: *1 posix_memalign: 00005584A18A6020:128 @16
2017/09/21 08:23:53 [debug] 5#5: *1 event timer add: 12: 60000:1505982293411
2017/09/21 08:23:53 [debug] 5#5: *1 http finalize request: -4, «/?» a:1, c:2
2017/09/21 08:23:53 [debug] 5#5: *1 http request count:2 blk:0
2017/09/21 08:23:53 [debug] 5#5: *1 http run request: «/?»
2017/09/21 08:23:53 [debug] 5#5: *1 http upstream check client, write event:1, «/»
2017/09/21 08:23:53 [debug] 5#5: *1 http upstream request: «/?»
2017/09/21 08:23:53 [debug] 5#5: *1 http upstream process header
2017/09/21 08:23:53 [error] 5#5: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.80.2.244, server: myhost.ru, request: «GET /test HTTP/1.1», upstream: «127.0.0.1:10083», host: «myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 http next upstream, 2
2017/09/21 08:23:53 [debug] 5#5: *1 free rr peer 2 4
2017/09/21 08:23:53 [warn] 5#5: *1 upstream server temporarily disabled while connecting to upstream, client: 10.80.2.244, server: myhost.ru, request: «GET /test HTTP/1.1», upstream: «127.0.0.1:10083», host: «myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 free rr peer failed: 00005584A18CDAE0 0
2017/09/21 08:23:53 [debug] 5#5: *1 close http upstream connection: 12
2017/09/21 08:23:53 [debug] 5#5: *1 free: 00005584A18A6020, unused: 48
2017/09/21 08:23:53 [debug] 5#5: *1 event timer del: 12: 1505982293411
2017/09/21 08:23:53 [debug] 5#5: *1 reusable connection: 0
2017/09/21 08:23:53 [debug] 5#5: *1 get rr peer, try: 1
2017/09/21 08:23:53 [debug] 5#5: *1 get rr peer, current: 00005584A18CDC98 1
2017/09/21 08:23:53 [debug] 5#5: *1 stream socket 12
2017/09/21 08:23:53 [debug] 5#5: *1 epoll add connection: fd:12 ev:80002005
2017/09/21 08:23:53 [debug] 5#5: *1 connect to 127.0.0.1:10083, fd:12 #3
2017/09/21 08:23:53 [debug] 5#5: *1 http upstream connect: -2
2017/09/21 08:23:53 [debug] 5#5: *1 posix_memalign: 00005584A18A6020:128 @16
2017/09/21 08:23:53 [debug] 5#5: *1 event timer add: 12: 60000:1505982293412
2017/09/21 08:23:53 [debug] 5#5: *1 http upstream request: «/?»
2017/09/21 08:23:53 [debug] 5#5: *1 http upstream process header
2017/09/21 08:23:53 [error] 5#5: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.80.2.244, server: myhost.ru, request: «GET /test HTTP/1.1», upstream: «127.0.0.1:10083», host: «myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 http next upstream, 2
2017/09/21 08:23:53 [debug] 5#5: *1 free rr peer 1 4
2017/09/21 08:23:53 [warn] 5#5: *1 upstream server temporarily disabled while connecting to upstream, client: 10.80.2.244, server: myhost.ru, request: «GET /test HTTP/1.1», upstream: «127.0.0.1:10083», host: «myhost.ru»
2017/09/21 08:23:53 [debug] 5#5: *1 free rr peer failed: 00005584A18CDC98 0
2017/09/21 08:23:53 [debug] 5#5: *1 finalize http upstream request: 502
2017/09/21 08:23:53 [debug] 5#5: *1 finalize http proxy request
2017/09/21 08:23:53 [debug] 5#5: *1 close http upstream connection: 12
2017/09/21 08:23:53 [debug] 5#5: *1 free: 00005584A18A6020, unused: 48
2017/09/21 08:23:53 [debug] 5#5: *1 event timer del: 12: 1505982293412
2017/09/21 08:23:53 [debug] 5#5: *1 reusable connection: 0
2017/09/21 08:23:53 [debug] 5#5: *1 http finalize request: 502, «/?» a:1, c:1
2017/09/21 08:23:53 [debug] 5#5: *1 http special response: 502, «/?»
2017/09/21 08:23:53 [debug] 5#5: *1 HTTP/1.1 502 Bad Gateway
Server: nginx/1.13.5
Date: Thu, 21 Sep 2017 08:23:53 GMT
Content-Type: text/html
Content-Length: 575
Connection: keep-alive
2017/09/21 08:23:53 [debug] 5#5: *1 write new buf t:1 f:0 00005584A18B8240, pos 00005584A18B8240, size: 157 file: 0, size: 0
2017/09/21 08:23:53 [debug] 5#5: *1 http write filter: l:0 f:0 s:157
2017/09/21 08:23:53 [debug] 5#5: *1 http output filter «/?»
2017/09/21 08:23:53 [debug] 5#5: *1 http copy filter: «/?»
2017/09/21 08:23:53 [debug] 5#5: *1 http postpone filter «/?» 00005584A18B8478
.
Источник
Как отследить причину ошибки upstream timed out в Nginx?
Есть сервер на ubuntu apache + nginx. На нем несколько сайтов и в последнее время каждый день сервер умирает с ошибкой «*46 upstream timed out (110: Connection timed out) while connecting to upstream». Особых изменений в код не было, но каждый из сайтов ежедневно обновляет информацию у себя, в файлах на сервере и т.п. Перезагрузка сервера помогает, но мне не хватает знаний, чтобы понять как выявить проблему — есть доступ к логам ошибок, доступа, но ничего необычного я там не вижу.
Посоветуйте здравый материал или методику для того, чтобы понять какой именно скрипт перегружает систему. Сайты объемные с множеством функций и даже если понять какой из них запускает пагубный процесс, то дальше будет опять непонятно как внутри именно этого сайта выявить ту самую функцию.
- Вопрос задан более года назад
- 317 просмотров
Apache 2.4.18 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/1.0.2g
PHP 7.0.33-0ubuntu0.16.04.14
ngnix 1.15.8
да, работает на php. лог ошибок php и смотрю, как я понимаю. лог включен, для каждого домена свой файл с ними и там как раз нет ничего необычного, но в момент, когда сервер перегружен добавляется ошибка из моего вопроса.
то есть apache -> nginx -> php? и падает nginx?
— а разве в логах нет названий скриптов, чтобы понять что бежало во время падения?
— в логах линукса что то есть, например out of memore killer?
нет, названий нет. когда есть какая-то ошибка — он прям пишет файл, строчку и т.п. здесь же www-data на 100% грузить сервак начинает и во фронте возвращается Connection timed out, в логи пишется ошибка из вопроса.
— в логах линукса что то есть, например out of memore killer?
где его откопать можно?
Источник
upstream timed out 110 connection timed out в Nginx
В логах ошибки будут выглядеть так:
grep ‘upstream timed out’ /var/log/nginx/error.log
2018/08/13 17:01:03 [error] 32147#32147: *1197966 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 123.123.123.123, server: example.com, request: «POST /api.php/shop.product.update?id=3268 HTTP/1.1», upstream: «fastcgi://unix:/var/run/php7.0-example.sock», host: «example.com»
Если такие записи появляются прежде всего нужно установить причины. Возможны два варианта: 1) код так работать не должен — ждет ответа от какого-то недоступного ресурса или базы 2) длительное выполнение ожидаемо.
Во втором случае достаточно увеличить лимиты. Обычно так приходится делать в случае с выгрузками товаров на сайт, которые могут выполняться в течение нескольких часов.
Как исправить ошибку если используется PHP-FPM
Если скрипты выполняет fpm — меняется значение параметра fastcgi_read_timeout 400; (о директиве)
Значение в секундах можно значительно увеличивать, обычно достаточно 400.
location / <
index index.php;
try_files $uri $uri/ =404;
fastcgi_connect_timeout 20;
fastcgi_send_timeout 120;
fastcgi_read_timeout 400;
Лимит может превышаться при длительном выполнении PHP скриптов.
Как исправить ошибку если используется Apache
При проксировании требуется добавить директиву proxy_read_timeout 150;
Значение также как в первом случае задается в секундах и означает лимит времени между операциями чтения.
location / <
index index.php;
try_files $uri $uri/ =404;
proxy_read_timeout 150;
После изменения конфигурации веб-сервер требуется перезапустить командой nginx -s reload.
Источник