SWFUpload преждевременно закрывает соединение при загрузке (nginx 499) - PullRequest
4 голосов
/ 22 января 2010

Я использую swfupload для загрузки файлов в nginx. Он отлично работает для меня и 99% наших пользователей. Тем не менее, для нескольких пользователей, это как-то дает сбой во время загрузки. Он открывает соединение, но, кажется, закрывает его до его завершения - nginx сообщает о состоянии 499 в своем журнале доступа, который является NGX_HTTP_CLIENT_CLOSED_REQUEST.

Мне удалось схватить одного из этих пользователей, чтобы получить больше информации. Они работают на Flash 10.0.42, на XP с Firefox 3.5.7.

Кто-нибудь видел что-нибудь подобное? Любые предложения по его устранению / как я мог бы продолжить расследование?

-Джонатан

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Ошибка 499 возникает, когда:

  • Пользователь успешно отправляет все данные (включая загрузку файла) на сервер
  • Пользователь отменяет запрос до получения ответа (т. Е. При обновлении страницы все текущие запросы будут отменены)
  • Сервер (nginx) получает запрос и успешно обрабатывает его (сохраняет загруженный файл). Подчеркивающий сервер возвращает 200 ответ.
  • Nginx получает ответ от подчеркивающего сервера, но когда хочет отправить ответ клиенту (для запроса POST), клиент закрыл соединение и ушел! Таким образом, сервер не может передать ответ клиенту.

Таким образом, ошибка 499 - это успешная загрузка с точки зрения сервера! Но поскольку клиент не получил никакого ответа, nginx помечает его как ошибку 499.

1 голос
/ 25 января 2010

На случай, если здесь ничего особенного не возникнет, вот список вещей, которые я хотел бы спросить у пользователей, для которых это не работает.

  • Какое у вас подключение к Интернету? Вы находитесь за (корпоративным) брандмауэром?

  • Какой тип файла вы пытались загрузить (тип и размер файла)? На каком носителе был этот файл? (Для исключения ошибок чтения при загрузке с компакт-диска, например)

  • Версия ОС, версия браузера, версия Flash, персональный брандмауэр и / или антивирусное программное обеспечение установлено (для проверки шаблонов)

  • Сработало ли со 2-й попытки?

0 голосов
/ 31 января 2010

Несколько возможностей,

  • Пользователь обновил страницу до завершения загрузки.

  • Интернет-соединение пользователя отключено или сбито во время загрузки.

  • Если вы используете PHP (я догадываюсь), проверьте следующие параметры в вашем php.ini.

max_execution_time

Если выполнение сценария занимает слишком много времени, сервер остановит его на основании этого параметра.

max_file_uploads

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

upload_max_filesize

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

Извините, но без более конкретной информации я не могу сузить это дальше.

Если это затрагивает только 1% ваших пользователей, на мой взгляд, это приемлемо;) Лично я бы не стал тратить время на исправление ошибки на 1%, если только не клиент.

...