РЕДАКТИРОВАТЬ (15 июня 2018 г.) - Я решил проблему. Это был Postgres, где некоторые запросы занимали более 15 секунд. Большинство запросов относились к одному и тому же типу страниц, поэтому я просто удалил это. Вот что я сделал -
Мы находимся на 30-гигабайтном экземпляре AWS, в котором запущено приложение Ruby on Rails с использованием Passenger + Apache.
Хотя в базе данных App Postgres есть миллионы записей, размер базы данных составляет всего несколько ГБ. Теперь я нахожу, что сервер всегда находится в режиме высокой загрузки. Вот загрузка сервера и запущенный процесс.
Что я могу сделать, чтобы диагностировать проблему или оптимизировать сервер? поскольку приложение продолжает вылетать из-за высокой загрузки ЦП или памяти, когда в сети находится всего 20 пользователей.
Вот вывод команд -
время безотказной работы
sar -q
верхняя
vmstat 10 6
iostat 2
ps -eo 'pcpu,% cpu, pid, comm' | grep -v '% КОМАНДА PID ЦП' | sort -n (последние 20 рядов)
ps -eo 'rss,% mem, pcpu,% cpu, pid, comm' | grep -v '% КОМАНДА PID ЦП' | sort -n
Я решил проблему. Это был Postgres, где некоторые запросы занимали более 15 секунд. Большинство запросов относились к одному и тому же типу страниц, поэтому я просто удалил это. Вот что я сделал -
Включите ведение журнала Postgres (я включил запросы более 3 секунд). Откройте файл postgresql.conf и включите ведение журнала.
sudo vi /etc/postgresql/9.3/main/postgresql.conf
Проверьте файл журнала и выясните, какие запросы занимают больше времени.
sudo tail -f /var/log/postgresql/postgresql-9.3-main.log
Было несколько запросов, занимавших 15 секунд. Я посмотрел на код. В одной таблице не было индексации, поэтому я ее создал. Проблема возникла из-за одного неоптимизированного запроса. Поскольку это было не нужно, я просто удалил его из кода.