forum.bitel.ru http://forum.bitel.ru/ |
|
mysql slave host down -> виснет сервер биллинга http://forum.bitel.ru/viewtopic.php?f=19&t=5020 |
Страница 1 из 1 |
Автор: | Cromeshnic [ 24 янв 2011, 08:45 ] |
Заголовок сообщения: | mysql slave host down -> виснет сервер биллинга |
Решили ребутнуть сервер со slave-базой, в результате сервер биллинга просто повис. Выдаёт кучу соответствующих ошибок: java.net.NoRouteToHostException: No route to host com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure После рестарта сервера биллинга он заработал, но с тормозами, пока не поднялся slave. Вопрос к разработчикам: как правильно в рабочем режиме выключать slave? Сначала гасить mysql, потом ждать определенное время? И почему сервер виснет при недоступности слейва? |
Автор: | skyb [ 24 янв 2011, 09:18 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
он виснет потому что пытается достучаться до него, у меня та же проблема была. а что значит выключить слейв? |
Автор: | Cromeshnic [ 24 янв 2011, 10:06 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
Физически вырубить хост ![]() |
Автор: | skyb [ 24 янв 2011, 10:11 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
я как делал - вырубал в конфигах биллинга все что связано со слейвом и ребутал это все, потом физически вырубал. ![]() |
Автор: | Cromeshnic [ 24 янв 2011, 11:06 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
Нет, просто физически ребутал. Как бы ожидалось, что при недоступности слейва биллинг просто перейдет на основную базу. |
Автор: | skyb [ 24 янв 2011, 11:08 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
не отрабатывает конфиг о том что при не доступности отключать слейв? |
Автор: | Cromeshnic [ 24 янв 2011, 12:00 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
Отрабатывает, письма шлёт. Но висит при этом. Видимо при недоступности хоста каждый вызов getDBSlaveConnectionFromPool() выполняется довольно долго. Но это так, моя версия. |
Автор: | skyb [ 24 янв 2011, 12:47 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
ненене, я говорю про то что он должен отключать слейв при недоступности |
Автор: | Cromeshnic [ 24 янв 2011, 12:59 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
Цитата: ID события: db.slave.connect.error Время регистрации события: 24.01.2011 10:23:37 Ошибка соединения с Slave базой данных: null. Вместо соединения с данной базой было использовано соединение с Master базой. Необходимо срочно восстановить соединение с Slave базой null. java.lang.NullPointerException at ru.bitel.bgbilling.server.util.DefaultServerSetup.getDBSlaveConnectionFromPool(DefaultServerSetup.java:566) at ru.bitel.bgbilling.server.util.DefaultServerSetup.getDBSlaveConnectionFromPool(DefaultServerSetup.java:510) at bitel.billing.server.admin.eventbus.BillingEventBus$ListenerThread.run(BillingEventBus.java:188) Цитата: ID события: db.slave.connect.error
Время регистрации события: 24.01.2011 10:23:03 Ошибка соединения с Slave базой данных: 1. Необходимо срочно восстановить соединение с Slave базой 1. com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: java.net.NoRouteToHostException: No route to host STACKTRACE: java.net.SocketException: java.net.NoRouteToHostException: No route to host at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2641) at com.mysql.jdbc.Connection.<init>(Connection.java:1531) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185) at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:94) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:300) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:816) at ru.bitel.bgbilling.server.util.DefaultServerSetup.getSlaveConnectionFromPool(DefaultServerSetup.java:768) at ru.bitel.bgbilling.kernel.admin.server.errorlog.DatabaseCheckTask.checkForDisable(DatabaseCheckTask.java:103) at ru.bitel.bgbilling.kernel.admin.server.errorlog.DatabaseCheckTask.doTask(DatabaseCheckTask.java:23) at bitel.billing.server.admin.errorlog.AlarmSender.run(AlarmSender.java:238) ** END NESTED EXCEPTION ** Last packet sent to the server was 0 ms ago. at com.mysql.jdbc.Connection.createNewIO(Connection.java:2707) at com.mysql.jdbc.Connection.<init>(Connection.java:1531) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185) at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:94) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:300) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:816) at ru.bitel.bgbilling.server.util.DefaultServerSetup.getSlaveConnectionFromPool(DefaultServerSetup.java:768) at ru.bitel.bgbilling.kernel.admin.server.errorlog.DatabaseCheckTask.checkForDisable(DatabaseCheckTask.java:103) at ru.bitel.bgbilling.kernel.admin.server.errorlog.DatabaseCheckTask.doTask(DatabaseCheckTask.java:23) at bitel.billing.server.admin.errorlog.AlarmSender.run(AlarmSender.java:238) |
Автор: | Администратор [ 24 янв 2011, 13:03 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
Там если уже есть соединение созданное с БД в пуле, то при отваливании MySQL и вызове этого коннекта повисает на тестовом запросе SELECT 1. Возможно, нет в Java возможности распознать, что коннект TCP закрыт с другой стороны.. Или в драйвере это не предусмотрено. Решили проблему установкой для тестового запроса таймаута на выполнение и + опции коннекта &queryTimeoutKillsConnection=true Т.е. если по таймауту не отвечает коннект, то соединение считается неактивным. И коннект возвращается как null с подхватом мастер - БД. Только: 1) это сделали только для 5.2 пока. 2) нужно будет обновить версию MySQL. В ближайшее время тогда постараемся портировать на 5.1. |
Автор: | Cromeshnic [ 24 янв 2011, 13:45 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
Ок, спасибо. |
Автор: | Администратор [ 25 фев 2011, 13:26 ] |
Заголовок сообщения: | Re: mysql slave host down -> виснет сервер биллинга |
Обновления выложены. Нужно поставить update_lib для BGBIllingServer, чтобы обновилась библиотека mysql.jar. В прочих приложениях можно обновить её вручную. И в URL подключения к БД везде нужно выставить опцию queryTimeoutKillsConnection=true. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |