У нас есть приложение Java EE (портал электронной цифровой библиотеки) с Hibernate 4.3, которое подключается к базе данных PostGres 9.2. При нагрузочном тестировании с нагрузкой 175 одновременных пользователей, выполняющих вход в систему и получающих доступ к системе, загрузка ЦП сервера базы данных возрастает до 100% и остается прежней.
Оборудование для сервера базы данных: 4-ядерный процессор Pentium 2+ ГГц. 12 ГБ ОЗУ Ubuntu Размер пула соединений составляет 200. Сервер приложений - Apache Tomcat 6.x, работающий на другом процессоре Pentium 2+ ГГц с тактовой частотой 4 ядра. 12 ГБ ОЗУ для машины Ubuntu.
Пожалуйста помоги! Нужно срочно это исправить.
Я столкнулся с подобной проблемой. Причина была в том, что некоторые транзакции зависали и работали долгое время. Таким образом, загрузка процессора увеличилась до 100%. Следующая команда помогла выяснить, какие соединения работают дольше всего:
SELECT max(now() - xact_start) FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'active');
Эта команда показывает время, с которого установлено соединение. Это время не должно быть больше часа. Так что отключение соединения, которое работало долгое время или зависало в любой момент, помогло мне. Я следил за этим постом, чтобы отслеживать и решать свою проблему. Почта включает множество полезных команд для отслеживания этой ситуации.
У вас есть администратор базы данных?
Сможет ли он ответить на вопросы о регулярном обслуживании базы данных, например, о частоте анализа таблиц, о достаточном объеме памяти для базы данных?
Можете ли вы найти запросы, которые влияют на процессор базы данных?
Существуют несколько способов помочь Вам без расширения аппаратного обеспечения, например: