BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 19 июн 2025, 14:26

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Deadlock
СообщениеДобавлено: 25 мар 2014, 05:28 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Сегодня получил deadlock на accounting-е, на что в таких случаях стОит обратить внимание при работе биллинга? show innodb status прилагаю.

Код:
accounting 03-25/03:25:18 ERROR [accwrkr-6-p-12-t-1] WorkerTask - com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting tra
ru.bitel.bgbilling.common.BGException: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
        at ru.bitel.bgbilling.modules.inet.accounting.SessionFlushingManager.flush(SessionFlushingManager.java:415)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.sessionFinish(Accounting.java:1591)
        at ru.bitel.bgbilling.modules.inet.accounting.InetConnectionCallRuntime.finish(InetConnectionCallRuntime.java:372)
        at ru.bitel.bgbilling.modules.inet.accounting.InetConnectionCallRuntime.tryFinish(InetConnectionCallRuntime.java:340)
        at ru.bitel.bgbilling.modules.inet.accounting.worker.SessionFinishWorker.runImpl(SessionFinishWorker.java:112)
        at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
        at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1064)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
        at ru.bitel.bgbilling.modules.inet.accounting.SessionFlushingManager.merge(SessionFlushingManager.java:901)
        at ru.bitel.bgbilling.modules.inet.accounting.SessionFlushingManager.flush(SessionFlushingManager.java:361)
        ... 15 more



Информация о версии:

Клиент: вер. 6.0 сборка 1301 от 06.03.2014 16:48:33
os: Linux; java: Java HotSpot(TM) Server VM, v.1.6.0_35
Сервер: вер. 6.0 сборка 1697 от 11.03.2014 16:54:01
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_35

assist вер. 6.0 сборка 105 от 05.02.2014 15:53:10
bill вер. 6.0 сборка 342 от 05.02.2014 19:11:42
card вер. 6.0 сборка 226 от 05.02.2014 15:53:15
dba вер. 6.0 сборка 168 от 05.02.2014 15:53:37
enaza вер. 6.0 сборка 75 от 05.02.2014 15:53:46
gorod вер. 6.0 сборка 169 от 05.02.2014 15:53:47
inet вер. 6.0 сборка 1353 от 11.03.2014 17:16:59
mps вер. 6.0 сборка 210 от 24.02.2014 20:25:19
npay вер. 6.0 сборка 223 от 05.02.2014 15:55:06
paylinks вер. 6.0 сборка 34 от 05.02.2014 15:55:07
qiwi вер. 6.0 сборка 41 от 05.02.2014 15:55:21
rentsoft вер. 6.0 сборка 59 от 05.02.2014 15:55:46
reports вер. 6.0 сборка 210 от 05.02.2014 15:55:46
rscm вер. 6.0 сборка 192 от 05.02.2014 15:55:48
ru.bitel.bgbilling.plugins.cladr вер. 6.0 сборка 121 от 05.02.2014 15:55:14
ru.bitel.bgbilling.plugins.dispatch вер. 6.0 сборка 102 от 06.03.2014 16:49:16
trayinfo вер. 6.0 сборка 176 от 05.02.2014 15:55:51
wellpay вер. 6.0 сборка 38 от 05.02.2014 15:56:19
wm вер. 6.0 сборка 191 от 05.02.2014 15:56:42
yamoney вер. 6.0 сборка 65 от 05.02.2014 15:56:43


Вложения:
status.txt [17.78 КБ]
Скачиваний: 402
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Deadlock
СообщениеДобавлено: 25 мар 2014, 14:12 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Если достаточно редко возникает (например, до нескольких раз в час) - то не страшно.
https://dev.mysql.com/doc/refman/5.0/en ... locks.html

InnoDB uses automatic row-level locking. You can get deadlocks even in the case of transactions that just insert or delete a single row. That is because these operations are not really “atomic”; they automatically set locks on the (possibly several) index records of the row inserted or deleted.
Always be prepared to re-issue a transaction if it fails due to deadlock. Deadlocks are not dangerous. Just try again.

Другое дело, если постоянно возникает. Тогда желательно еще сохранить вывод jstack <PID>, а потом пробовать перезапускать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Deadlock
СообщениеДобавлено: 25 мар 2014, 15:10 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
За полтора года - впервые и однократно. jstack нужно в какой-то определенный момент запускать или в любое время после возникновения ошибки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Deadlock
СообщениеДобавлено: 25 мар 2014, 15:34 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
abu писал(а):
За полтора года - впервые и однократно. jstack нужно в какой-то определенный момент запускать или в любое время после возникновения ошибки?


Желательно сразу после возникновения ошибки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Deadlock
СообщениеДобавлено: 25 мар 2014, 18:27 
Не в сети
Клиент

Зарегистрирован: 10 окт 2012, 17:00
Сообщения: 339
Карма: 0
Если deadlock'и будут повторяться и отловится актуальный jstack, отпишусь в этой теме.
Спасибо за ответы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.071s | 28 Queries | GZIP : On ]