И тут вы заметили, что nginx время от времени отвечает ошибкой 502, а в журнале uWSGI появились записи вида «invalid request block size: 11527 (max 4096)…skip».
Вы, конечно, до настройки uWSGI прочли обязательное и знаете, что заголовки каждого из запросов uWSGI хранит в буфере размером 4096 байт по умолчанию. И что этот буфер, в случае необходимости, можно увеличить директивой buffer-size в файле конфигурации, или задать параметром -b в командной строке.

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

Запросы можно увидеть в журнале uWSGI (если вы его для этого предварительно настроили), либо сравнивая журналы uWSGI и nginx.

Есть большая доля вероятности, что вы обнаружите там длинные GET-запросы. Вы же помните, что метод GET передаёт параметры не в теле запроса, а в заголовках.

Итак, причина ошибок обнаружена, теперь-то точно можно перейти к их устранению. Ну, а тут должно быть понятно, что первым делом следует попробовать заменить эти запросы на POST, и только если это не вариант, переходить к увеличению размера буфера, упомянутому в начале статьи.

Удачи!

Категории

Окружение
Платформа
Проект

На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.