Назад | Перейти на главную страницу

Инстанс AWS с 30 ГБ ОЗУ, все еще не хватает памяти и высокая загрузка ЦП с небольшим приложением

РЕДАКТИРОВАТЬ (15 июня 2018 г.) - Я решил проблему. Это был Postgres, где некоторые запросы занимали более 15 секунд. Большинство запросов относились к одному и тому же типу страниц, поэтому я просто удалил это. Вот что я сделал -

  1. Включить ведение журнала Postgres (я включил более 3-х секундных запросов)
  2. Проверьте файл журнала и найдите, какие запросы занимают больше времени. Было несколько минут 15.
  3. Я посмотрел на код. В одной таблице не было индексации, поэтому я ее создал. Проблема возникла из-за одного неоптимизированного запроса. Поскольку это было не нужно, я просто удалил его из кода.

Мы находимся на 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 секунд. Большинство запросов относились к одному и тому же типу страниц, поэтому я просто удалил это. Вот что я сделал -

  1. Включите ведение журнала Postgres (я включил запросы более 3 секунд). Откройте файл postgresql.conf и включите ведение журнала.

    sudo vi /etc/postgresql/9.3/main/postgresql.conf

  2. Проверьте файл журнала и выясните, какие запросы занимают больше времени.

    sudo tail -f /var/log/postgresql/postgresql-9.3-main.log

  3. Было несколько запросов, занимавших 15 секунд. Я посмотрел на код. В одной таблице не было индексации, поэтому я ее создал. Проблема возникла из-за одного неоптимизированного запроса. Поскольку это было не нужно, я просто удалил его из кода.