Загрузка файла с результатами nginx в 408 / EAGAIN - PullRequest
0 голосов
/ 19 октября 2018

У меня есть приложение php, работающее на сервере Ubuntu 18.04, снабженное laravel forge.Все работает отлично, за исключением загрузки изображений с HTML-формой multipart / form-data.Это приводит к тайм-ауту ошибки соединения.

Просматривая nginx, я нашел следующие сообщения при попытке загрузить файл:

[pid 12937] setsockopt(16, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 12937] accept4(11, {sa_family=AF_INET, sin_port=htons(58384), sin_addr=inet_addr("MY_IP")}, [112->16], SOCK_NONBLOCK) = 16
[pid 12937] accept4(11, 0x7ffc48f7dd00, [112], SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
[pid 12937] recvfrom(16, "\26", 1, MSG_PEEK, NULL, NULL) = 1

Сообщение 'EAGAIN' означает, что нет доступных соединений длясокет для использования.Однако я нахожу это странным, потому что я единственный, кто отправляет запросы на этот сервер, а nginx 'worker_connections' установлен на 768.

Обновление: Я обнаружил, что эта проблема существует толькокогда я использую свой рабочий ноутбук с подключенным Ethernet. Любая другая машина в офисе работает нормально, также мой рабочий ноутбук работает нормально по WiFi.Так что это не проблема на стороне сервера, но она должна что-то делать с моим сетевым соединением.Я обменивался кабелями Ethernet с коллегами, у которых на ноутбуке нет этой проблемы, это ничего не меняет.

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Вы можете убедиться, что на стороне сервера нет ограничений, каков результат?

ulimit -a
0 голосов
/ 27 октября 2018

Как вы знаете, сообщение 408 Request Timeout - это код состояния HTTP, который возвращается клиенту, когда запрос к серверу занимает больше времени, чем выделенное сервером время ожидания.

Если у вас есть эта ошибка (408), вы можете проверить следующие элементы на вашем сервере:

  • php-pfm настроить (Не ограничивать запросы)
  • проверитьследующие элементы в nginx.conf:
    • client_body_timeout
    • client_header_timeout
    • keepalive_timeout

ЕслиУ вас все еще есть проблема. Вы можете прочитать это сообщение: 408 Запрос времени ожидания: что это такое и как его исправить

0 голосов
/ 22 октября 2018

408 - это тайм-аут на стороне клиента, который означает, что ваш браузер или клиент закрывает соединение.Это не сервер, скорее вам нужно настроить клиент, если вы используете собственный клиент.

Если вы используете стандартный браузер, то лучший способ справиться с этой ситуацией - запустить JS на стороне клиента, которыйпродолжает посылать запрос на сохранение активности, гарантируя, что браузер не прервет тайм-аут соединения.

Чтобы выполнить отладку, попробуйте поиграться с таймаутами в браузере Firefox, перейдя к network.http.connection-timeout в about:config

* 1008.* Если это решит, то реализуй keepalive
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...