#ruby-on-rails #postgresql #heroku
#ruby-on-rails #postgresql #heroku
Вопрос:
У меня есть приложение rails на heroku, в которое входят пользователи. Я периодически получаю это исключение:
UserSessionsController # (ActiveRecord::StatementInvalid) «PGError: FATAL: прерывание соединения из-за команды администратора nсервер неожиданно закрыл соединение n tэто, вероятно, означает, что сервер завершил работу ненормально n tbef…
URL
POST http://secure.huckberry.com/user_sessions
Какова вероятная причина этого? Я был бы признателен за любую помощь.
Комментарии:
1. Очевидно, что администратор выключил / перезапустил сервер.
2. Это больше похоже на то, что кто-то запустил pg_cancel_backend(yourpidhere); или остановил один серверный процесс. Если вы выключите сервер, вы получите сообщение об ошибке, сообщающее, что он завершает работу.
3. Сегодня я видел похожие ошибки.
4. У меня такая же ошибка на communityguides.eu/feeds сообщается исключительным.
5. Я получил это, когда запустил несколько одновременных импортов postgres db из разных окон терминала (я пытался сэкономить время, импортируя последние данные в три разные схемы psql в одной базе данных)
Ответ №1:
Предполагая, что вы видели это недавно, это связано с недавней частью высокоприоритетных работ по обслуживанию, чтобы обеспечить непрерывное резервное копирование в общих базах данных — включая перезапуск сервера. Вам не следует беспокоиться об этой ошибке, при условии, что она не воспроизводится. Я не думаю, что это очень вероятно, так что счастливого взлома!
Комментарии:
1. Сегодня я обновил некоторые пакеты и получил эту ошибку. Я не уверен, что вызвало это. Но я определенно хотел бы знать причину, чтобы я мог избежать этого в будущем.
Ответ №2:
Вероятно, это означает, что что-то отправило серверному процессу сигнал SIGTERM. Это может произойти, если почтальон получит SIGINT от чего-либо. Однако, если вы можете повторно подключиться, это не так, потому что postmaster запретил бы новые подключения.
Вероятно, у вас какое-то столкновение в вашем приложении. Включите ведение журнала запросов и проверьте, нет ли чего-то необычного.
Ответ №3:
Со мной произошла эта ошибка. У моего сервера приложений было открытое соединение с базой данных. В моем SSH-терминале я добавил ip-адрес в файл ph_hba.conf и перезапустил сервер PostgreSQL.
Именно тогда появилась эта ошибка. Я обновил свою веб-страницу один раз, и ошибка исчезла.
Ответ №4:
Эта ошибка также может появиться, если вы запускаете набор тестов, который использует подключение к базе данных (в данном случае PSQL), и тест все еще выполняется (асинхронно). Прерывание соединения может прерваться, когда тест все еще выполняется, и это заканчивается этим сообщением об ошибке.
Комментарии:
1. как решить такого рода проблемы. Я завершаю соединение в моем файле модульного тестирования в перехватчике @AfterClass в java.