2013-09-26 7 views
6

Я использую единорога на Heroku. одна из проблем, с которыми я столкнулась, связана с загрузкой файлов. Мы используем несущую для загрузки, и, в основном, даже для файла размером около 2 МБ, к моменту загрузки 50-60% Unicorn отключается.Ошибка таймаута от единорога при загрузке файла

Мы не используем единорога, когда мы тестируем локально, и у меня нет проблем с большими файлами локально (хотя файлы загружаются в AWS с использованием несущей, как и при постановке + постановка). Тем не менее, на этапе & производственных серверов, я вижу, что мы получаем тайм-аут.

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

Спасибо! Ringo

+0

Можете ли вы попробовать использовать единорога на местном уровне? –

ответ

0

Похоже, что ваш тайм-аут установлен слишком низко. Какова конфигурация вашего единорога?

См. https://devcenter.heroku.com/articles/rails-unicorn для хорошей отправной точки.

+1

Мой тайм-аут единорога был 15, поднялся до 30, но никакой разницы. Я предпочел бы разработать решение, которое не зависит от увеличения таймаута. –

2

Если вы загружаете большие файлы на S3 через Heroku, вы не можете разумно избежать тайм-аутов. Если кто-то решит загрузить большой файл, уйдет время. Если для загрузки в Heroku требуется больше 30 секунд, перейдите на S3 и обработайте запрос, время ожидания истечет. По уважительной причине, 30s-запрос - просто дрянная производительность.

Этот блог (и GitHub репо) очень полезно: http://pjambet.github.io/blog/direct-upload-to-s3/

С его помощью, вы должны быть в состоянии получить непосредственно до s3 загрузки файлов работы. Вы полностью избегаете попадания Heroku на основную часть загрузки. Используя обратные вызовы jquery-fileupload, вы можете отправить сообщение в приложение после того, как файл будет успешно загружен, и обработать его в фоновом режиме с помощью delayed_job. Подтверждение пользователям успешной загрузки - проблема с приложением, о которой вам просто нужно позаботиться.

+0

См. Также: http://stackoverflow.com/a/16341162/1546887 – Taavo

Смежные вопросы