Проблема с загрузкой изображений

Здравствуйте,

Кажется, это исправление FIX: automatically timeout long running image magick commands (#12670) · discourse/discourse@5deda5e · GitHub сломало загрузку нескольких изображений. Если я пытаюсь загрузить 3 изображения размером ~5–6 МБ, это не работает, каждый раз появляется эта ошибка. Я думаю, проблема в тайм-ауте 20 секунд.

lib/discourse.rb:93:in 'exec': Произошла ошибка при конвертации из PNG в JPG.

Спасибо :slight_smile:

Это не работает на этом сайте? Попробуйте загрузить изображение (при условии, что оно подходит для детей).

Здесь нужно установить ограничение, мы не можем увеличивать время значительно больше 20 секунд.

1 лайк

Привет, Сэм,
В прошлый раз у меня тоже это не сработало, поэтому я классифицировал это как ошибку, но сейчас оно загрузилось. На моём сайте это каждый раз не удаётся. Размер ~6 МБ / фото

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

Я могу рассмотреть возможность добавления настройки сайта «увеличить таймаут», но меня немного беспокоит, что конвертация этого простого изображения из PNG в JPG занимает более 10 секунд.

3 лайка

Спасибо! Я загрузил несколько изображений на Mega File folder on MEGA

Можете подтвердить, что у вас стандартная установка Docker?

Я только что протестировал одно из ваших образов выше — мы запускаем в контейнере две команды.

timeout -k 10.0 5 identify -format %Q image.jpg

и

timeout -k 40.0 20 convert jpeg:original.jpg -auto-orient -background white -interlace none -flatten -quality 90 jpg:/tmp/target.jpg

Первая команда занимает 0,27 секунды от отведённых 5 секунд на моей локальной системе.

Вторая команда занимает 1,3 секунды от отведённых 20 секунд.

Можете рассказать немного подробнее о вашей установке и о производительности сервера, на котором она работает?

1 лайк

Спасибо, Сэм, за проверку. Да, это стандартная установка Docker. Вчера я обновил сервер, потому что весь сайт стал работать очень медленно… и сделал пересборку. После обновления сервера всё работает отлично. Только что проверил. У Digital Ocean появился новый тариф примерно на 2 месяца с премиальными процессорами Intel, а тот, который у нас был — обычный — стал значительно слабее.

Старый сервер :arrow_down_small:
Basic — Общий CPU, 2 vCPU, 4 ГБ ОЗУ, 60 ГБ диска

Новый сервер :arrow_down_small:
Basic — Премиальный Intel Shared CPU, 2 vCPU, 4 ГБ ОЗУ, 60 ГБ диска

Извините за эту тему. 20 секунд — это достаточно. И ещё раз спасибо! :slightly_smiling_face:

1 лайк

Да, я думаю, что мы действуем правильно.

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

3 лайка

Эта тема была автоматически закрыта через 15 часов. Новые ответы больше не принимаются.