Невозможно загрузить в пассажирское приложение beache apache
Я не могу загрузить файл размером 8,4 МБ в приложении для пассажиров за Apache. Передача того же файла через scp заняла 4.1 минуты.
Обратный след ошибки:
[pid = 10222 file = ext / apache2 / Hooks.cpp: 727 time = 2010-05-18 07: 13: 14.842]: непредвиденная ошибка в mod_passenger: ошибка при получении данных загрузки по HTTP: сброс соединения по одноранговому узлу (104) Обратный след: в 'boost::shared_ptr Hooks::receiveRequestBody(request_rec*, const char*)' (Hooks.cpp: 1084) в 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:459)
ПРИМЕЧАНИЕ: пользователь не отменил или что-нибудь. Он был на Firefox:-)
Другие ошибки, замеченные в журналах:
[pid = 16593 file = ext / apache2 / Hooks.cpp: 727 time = 2010-05-23 23: 06: 12.156]: непредвиденная ошибка в mod_passenger: похоже, что браузер не завершил загрузку файла: он сказал, что будет загрузить 6610086\ bytes, но оно закрыло соединение после отправки 610155 байтов. Пользователь, вероятно, нажал "Стоп" в браузере, или его интернет-соединение прервалось. Обратный след: в 'boost::shared_ptr Hooks::receiveRequestBody(request_rec*, const char*)' (Hooks.cpp: 1084) в 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:459)
ПРИМЕЧАНИЕ: пользователь не отменил или что-нибудь. Он был на IE6:-)
[pid = 28995 file = ext / apache2 / Hooks.cpp: 727 time = 2010-05-17 00: 40: 18.697]: непредвиденная ошибка в mod_passenger: не удалось отправить данные на сервер ApplicationPool: сбой записи (): разбитый канал (32) Обратный след: в 'virtual boost::shared_ptr Passenger::ApplicationPoolServer::Client::get(const Passe\ nger::PoolOptions&)' (ApplicationPoolServer.h: 402) в 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp: 523)
вопросы:
- почему файл не загружается?
- лучшие практики для загрузки файлов в Apache для пропускной способности и производительности.
- Могу ли я обработать загрузку за пределами Apache, а затем передать его пассажиру
- также попытался mod_porter, http://modporter.com/, это, кажется, не помогает.
- есть ли режим отладки в пассажире - подробное ведение журнала
PS: Использование RubyOnRails, развернутого с mod_rails на apache, http://www.modrails.com/, с ruby Enterprise Edition. TimeOut установлен в 1200 в Apache virtalhost.
С уважением,
Дипак
2 ответа
Что, если для загрузки 610155 байт потребуется 1200 секунд? Это кажется вполне разумным. Передача HTTP, как правило, не так агрессивна, как механизмы, подобные scp, и может иметь тенденцию тянуть намного больше, поскольку HTTP не особенно эффективен при загрузке.
Вы можете попытаться открыть тайм-аут, если это напрямую влияет на ситуацию, или помнить, что некоторые клиенты могут быть подключены через брандмауэр, который по какой-либо причине ограничивает соединения максимальным промежутком времени, часто около десяти минут.
Можете ли вы повторить проблему из соединения с аналогичной скоростью? Или на файл большего размера?
К сожалению, это, вероятно, ошибка Safari. Смотрите это сообщение об ошибке пассажира:
Невозможно загрузить в пассажирское приложение beache apache
И этот древний отчет об ошибке WebKit:
https://bugs.webkit.org/show_bug.cgi?id=5760
Который затем указывает на сообщение об ошибке в Apple, которое либо не может быть просмотрено, либо было закрыто. Я только что столкнулся с проблемой сафари 5.0 (6533.16) на 10.6.4 с пассажиром 2.2.14, поэтому проблема явно не решена. Очень расстраивает.
Решение состоит в том, чтобы отключить keepalive для вашего vhost.