forum.bitel.ru http://forum.bitel.ru/ |
|
Deadlock http://forum.bitel.ru/viewtopic.php?f=44&t=9077 |
Страница 1 из 1 |
Автор: | abu [ 25 мар 2014, 05:28 ] | ||
Заголовок сообщения: | Deadlock | ||
Сегодня получил 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
|
Автор: | Amir [ 25 мар 2014, 14:12 ] |
Заголовок сообщения: | Re: Deadlock |
Если достаточно редко возникает (например, до нескольких раз в час) - то не страшно. 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>, а потом пробовать перезапускать. |
Автор: | abu [ 25 мар 2014, 15:10 ] |
Заголовок сообщения: | Re: Deadlock |
За полтора года - впервые и однократно. jstack нужно в какой-то определенный момент запускать или в любое время после возникновения ошибки? |
Автор: | stark [ 25 мар 2014, 15:34 ] |
Заголовок сообщения: | Re: Deadlock |
abu писал(а): За полтора года - впервые и однократно. jstack нужно в какой-то определенный момент запускать или в любое время после возникновения ошибки? Желательно сразу после возникновения ошибки. |
Автор: | abu [ 25 мар 2014, 18:27 ] |
Заголовок сообщения: | Re: Deadlock |
Если deadlock'и будут повторяться и отловится актуальный jstack, отпишусь в этой теме. Спасибо за ответы. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |