Я запускаю uwsgi в режиме императора
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
и получаю эту ошибку
invalid request block size: 21327 (max 4096)...skip
Что делать?? Тоже пробовал -b 32768
Я запускаю uwsgi в режиме императора
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
и получаю эту ошибку
invalid request block size: 21327 (max 4096)...skip
Что делать?? Тоже пробовал -b 32768
k
не работал у меня. Пришлось предоставить полный номер. Не могу найти указателей на форматы, которые вы можете использовать здесь.
Ответы:
Я также столкнулся с той же проблемой, следуя некоторому руководству. Проблема была в том, что я поставил вариант socket = 0.0.0.0:8000
вместо http = 0.0.0.0:8000
.
socket
опция предназначена для использования с некоторыми сторонними маршрутизаторами (например, nginx), тогда как, когда http
опция установлена, uwsgi может принимать входящие HTTP-запросы и маршрутизировать их самостоятельно.
socket = /tmp/myapp.sock
или http = 0.0.0.0:8000
что угодно, в зависимости от ваших потребностей.
Правильное решение - не переходить на протокол HTTP. Вам просто нужно увеличить размер буфера в настройках uWSGI.
buffer-size=32768
или в режиме командной строки:
-b 32768
Цитата из официальной документации:
По умолчанию uWSGI выделяет очень маленький буфер (4096 байт) для заголовков каждого запроса. Если вы начнете получать «неверный размер блока запроса» в своих журналах, это может означать, что вам нужен больший буфер. Увеличьте его (до 65535) с помощью параметра размера буфера.
Если вы получаете «21573» в качестве размера блока запроса в своих журналах, это может означать, что вы используете протокол HTTP для связи с экземпляром, говорящим по протоколу uwsgi. Не делай этого.
Отсюда: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
http-socket
здесь.
uwsgi
протокол, тогда вы также можете получить ту же ошибку, что и OP
http-socket
. Все остальное выдавало «502 Bad Gateway», даже когда размер буфера был увеличен.
Я столкнулся с той же проблемой, пытаясь запустить ее под nginx, и следил за документами здесь . Важно отметить, что после переключения на nginx вы должны убедиться, что вы не пытаетесь получить доступ к приложению через порт, указанный параметром --socket, а скорее порт "прослушивания" в nginx.conf. Хотя ваша проблема описана по-разному, заголовок в точности совпадает с моей проблемой.
Я мог бы исправить это, добавив --protocol = http в uwsgi
protocol=http
в свой .ini
файл
Эта ошибка отображается, когда сервер uWSGI использует uwsgi
протокол и пытается получить к нему доступ через http
протокол curl
напрямую или через веб-браузер. Если вы можете, попробуйте настроить сервер uWSGI для использования http
протокола, чтобы вы могли получить к нему доступ через веб-браузер или curl.
Если вы не можете (или не хотите) изменять его, вы можете использовать обратный прокси (например nginx
) перед локальным или удаленным сервером uWSGI, см. Https://uwsgi-docs.readthedocs.org/en/latest/Nginx .html
Если кажется, что работы слишком много, попробуйте uwsgi-tools
пакет python:
$ pip install uwsgi-tools
$ uwsgi_curl 10.0.0.1:3030
Существует также простой обратный прокси-сервер, uwsgi_proxy
если вам нужно получить доступ к своим приложениям через веб-браузер и т. Д. См. Более развернутый ответ https://stackoverflow.com/a/32893520/179581
Как указано в другом комментарии из документов:
Если вы получаете «21573» в качестве размера блока запроса в своих журналах, это может означать, что вы используете протокол HTTP для связи с экземпляром, говорящим по протоколу uwsgi. Не делай этого.
Если вы используете Nginx, это произойдет, если у вас есть эта конфигурация (или что-то подобное):
proxy_pass http://unix:/path/to/socket.sock
это говорит HTTP с uWSGI (что делает его сварливым). Вместо этого используйте:
uwsgi_pass unix:/path/to/socket.sock;
человек, у меня такая же проблема; так что я сделал это ... посмотрите, используя UWSGI + DJANGO + NGINX + REACT +
1 - нано /etc/uwsgi/sites/app_plataform.ini [uwsgi]
DJANGO_SETTINGS_MODULE = app_plataform.settings env = DJANGO_SETTINGS_MODULE settings.configure ()
chdir = / home / app_plataform home = / root / app_plataform module = prometheus_plataform.wsgi: приложение
мастер = истинные процессы = 33 размер буфера = 32768
socket = /home/app_plataform/app_plataform.sock chmod-socket = 777 вакуум = истина
2 - сделать серьезный апгрейд производительности на nginx ... пользовательские www-данные;
worker_processes auto; worker_processes 4; pid /run/nginx.pid; включить /etc/nginx/modules-enabled/*.conf;
события {worker_connections 4092; multi_accept on; }
http {## ОБНОВЛЕНИЕ КОНФИГОВ
client_body_buffer_size 16K; client_header_buffer_size 16 КБ; client_max_body_size 32 м; #large_client_header_buffers 2 1k;
client_body_timeout 12; client_header_timeout 12; keepalive_timeout 15; send_timeout 10; access_log off;
## # Базовые настройки ##
отправить файл; tcp_nopush on; tcp_nodelay on; #keepalive_timeout 65; types_hash_max_size 2048; server_tokens выключен;
server_names_hash_bucket_size 64; # server_name_in_redirect off;
включить /etc/nginx/mime.types; default_type application / octet-stream;
## # Настройки SSL ##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Отбрасываем SSLv3, ref: POODLE ssl_prefer_server_ciphers on;
## # Настройки журнала ##
access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;
## # Настройки Gzip ##
gzip дальше; gzip_comp_level 2; gzip_min_length 1000; gzip_proxied с
истекшим сроком действия частной аутентификации без кеширования без хранилища; gzip_types text / plain application / x-javascript text / xml text / css application / xml; gzip_vary on;#gzip_proxied любой; #gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; #gzip_types text / plain text / css application / json application / javascript text / xml application / xml application / xml + rss text / javascript;
## # Конфигурации виртуального хоста ##
включить /etc/nginx/conf.d/ .conf; включить / etc / nginx / sites-enabled / ; }
3 - затем ... перезапустите службы или сервер reebot ...
systemctl перезапуск uwsgi и systemctl перезапуск nginx