Я работаю над сайтом с довольно высокой нагрузкой (>150 тыс. просмотров страниц в день). Я получаю ошибки 429, в основном на шине сообщений. Ранее у меня были проблемы из-за неправильной конфигурации set_real_ip_from, но это уже исправлено. Я также удалил (возможно, временно?) шаблон ограничения частоты запросов.
Я всё ещё наблюдаю около 0,5 ошибок 429 в секунду.
У меня 5 рабочих процессов Unicorn на процессоре с 2 ядрами и 4 потоками. Оперативной памяти 16 ГБ. Postgres находится на отдельном хосте. Загрузка процессоров остаётся ниже 50%.
Я удалил шаблон ограничения частоты запросов и увеличил количество рабочих процессов Unicorn до 5 примерно в 8:20.
Это совершенно нормально: message-bus будет делать паузу с кодом 429, так как ваши «единороги» испытывают высокую нагрузку и немного формируют очередь.
4 ядра с 16 ГБ ОЗУ — это довольно странное соотношение, если узел не работает с базой данных. Например, лучше 8/8.
Отлично! Спасибо. Процессор всё ещё сильно загружен обработкой изображений, что, надеюсь, должно занять день-два.
Всё верно. Но «голое железо» имеет 2 ядра/4 потока. Добавить ОЗУ легко, а вот ядра — нет (у меня дома есть ещё один сервер с 32 ГБ!). Я разделил базу данных и веб-сервер на две машины, чтобы получить больше мощности процессора. На том же сервере базы данных (веб-сервер на другом хосте) работает ещё полдюжины других баз данных с малотрафиковых сайтов. Как вы думаете, лучше ли запустить БД и веб-сервер на одной машине? Я, наверное, потеряю немного мощности процессора, но улучшу задержку.
Если у вас есть возможность использовать балансировщик нагрузки, то вы можете попробовать разместить веб-воркеры на обеих машинах для вашего высоконагруженного сайта, установив меньше воркеров на машине с базой данных, например, 5+2?
Если решение проблемы за счёт денег возможно, просто возьмите другой хост с лучшим соотношением CPU к RAM.
Что ж, эти машины, которые я получил бесплатно, уже немного устарели, так что я начинаю с этим смириться — хотя производительность одного CPU всё ещё кажется лучше, чем у DO droplet. Если бы решение проблемы за деньги в краткосрочной перспективе было вариантом, то, вероятно, у меня не было бы этого конкретного клиента, который хочет корпоративную производительность по бизнес-ценам.
Но я также вижу, что где-то ещё в цепочке я жёстко задал количество единорогов, поэтому я всё ещё запускаю только 3.
К сожалению, моя текущая конфигурация общается только с Docker на одном хосте. Мне стоило бы потратить немного больше времени и посмотреть, можно ли запустить пару единорогов и на другой машине. Наверное, уже пора снова взглянуть на HAproxy, но у меня есть ещё один проект, который я очень хочу запустить в первую очередь.
Огромное спасибо за ваши insights.
РЕДАКТИРОВАНИЕ: И когда я наконец перешёл на 5 единорогов вместо 3, графики производительности выглядят примерно так же (возможно, даже чуть медленнее?), но ошибки 429 значительно снизились. Похоже, как только обработка изображений будет завершена, всё будет работать отлично.
И уже на следующий день количество ошибок 429 упало почти до нуля, так что совет Рафаэля «просто не волнуйтесь» оказался гениальным! Ещё раз спасибо, Кейн и Рафаэль. Я не могу выразить, насколько я ценю вашу помощь.