У меня есть приложение 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 дБ.
Любые мысли по оптимизации и отладке будут полезны.
Спасибо.