Я запускаю веб-сервис, который выполняет некоторые основные операции по обработке изображений.
Веб-сервер сначала принимает загружаемые изображения от пользователей и временно сохраняет их. Затем внутренний сервер загружает изображение через HTTP-запрос на получение и выполняет фактическую обработку. Затем он отправляется обратно на веб-сервер. Затем пользователь загружает изображения. Обработанное изображение обычно значительно больше исходного изображения.
Веб-служба иногда сталкивается с пиками iowait при высокой загрузке ЦП, и сервер выдает ошибку тайм-аута недоступности запроса. Высокий iowait от nginx.
Решение, данное для подобных проблем, рекомендует включение отправки файла и выключение направления. я тоже отключил буфер и request_buffers так как я читал, что это также может быть источником проблемы. Хотя это, кажется, несколько уменьшает возникновение проблемы, это все еще происходит время от времени, и я понятия не имею, почему.
Я скопировал свои файлы конфигурации ниже. Есть ли у кого-нибудь рекомендации, что еще нужно изменить? Проблема действительно сводит меня с ума.
сервер {
если ($http_user_agent ~ ^$){
вернуть 503;
}
if ($http_user_agent ~* "Mozilla/4.0\(совместимый;\MSIE\6.0;\Windows\NT\5.1;\SV1;\.NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\ )) {
вернуть 503;
}
имя_сервера [отредактировано: сайт];
access_log /var/log/[отредактировано: файл журнала];
error_log /var/log/[отредактировано: файл журнала];
слушать 0.0.0.0:443 ssl;
ssl_certificate [отредактировано: адрес сертификата]
ssl_certificate_key [отредактировано: ключ сертификата]
включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
страница_ошибки 502 /custom_502.html;
местоположение = /custom_502.html {
корень /usr/share/nginx/html;
внутренний;
}
местоположение = /error_502.png {
корень /usr/share/nginx/html;
}
client_max_body_size 300M;
proxy_request_buffering выключен;
место расположения / {
# пересылать запросы приложений на сервер gunicorn
proxy_pass http://localhost:8001;
прокси_перенаправление выключено;
proxy_set_header Хост $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
местоположение/статический {
proxy_max_temp_file_size 0;
направление выключено;
отправить файл включен;
псевдоним [отредактировано: местоположение сайта]/static;
истекает через 5 дней;
}
}
сервер {
если ($http_user_agent ~ ^$){
вернуть 503;
}
if ($http_user_agent ~* "Mozilla/4.0\(совместимый;\MSIE\6.0;\Windows\NT\5.1;\SV1;\.NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\ )) {
вернуть 503;
}
если ($ host = [отредактировано: адрес]) {
вернуть 301 https://$host$request_uri;
слушать 0.0.0.0:80;
имя_сервера [отредактировано: сайт];
вернуть 404;
client_max_body_size 300M;
}