Приложение High Traffi c rails дает случайные 502 секунды и время ожидания чтения - PullRequest
0 голосов
/ 12 марта 2020

У меня есть приложение rails с API, которое получает от 600 до 1000 тысяч запросов в день. Эти запросы в первую очередь направлены на список файлов и конечную точку выборки.

Конечная точка списка файлов выбирает список из 2000 записей, содержащих информацию о файле, из эластичного поиска, каждая из которых имеет идентификатор, который затем используется для выборки файла через API, используя send_file (используя заголовок X-SendFile по умолчанию с Nginx) и send_data (если файл сжимается, он распаковывается на лету и считывается).

Все это размещается на Настройка гипервизора lxd, где у нас были проблемы с заполнением памяти, хотя у нас было 32 гигабайта, мы увеличили ее до 48 Гб, но это тоже постепенно заполнялось. заполнен. мы немного профилировали, чтобы выяснить, что считывание файлов занимало память, и, похоже, была проблема с контейнером lxd, не освобождающим память, которую мы исправили через скрипт, который освобождает память каждые 30 минут.

Теперь, когда память стабильна, мы по-прежнему получаем некоторые показания и случайные значения 502, а также проблему SSL_Connect, которая начинает появляться (случайным образом) после получения 502 и останавливается, если мы перезапускаем приложение.

Мы используем конфигурацию puma по умолчанию и подключение 5 пулов для postgres дБ.

Любые мысли по оптимизации и отладке будут полезны.

Спасибо.

...