forum.bitel.ru http://forum.bitel.ru/ |
|
[6.1] Deadlock found http://forum.bitel.ru/viewtopic.php?f=44&t=10350 |
Страница 1 из 2 |
Автор: | Phricker [ 01 апр 2015, 12:19 ] |
Заголовок сообщения: | [6.1] Deadlock found |
Код: [root@bgbilling BGPPPoEAccess]# ./access_status.sh Java Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM [1.7.0_72] /usr/java/jdk1.7.0_72/jre Runtime name: 1407@bgbilling Java endorsed dirs: /lib/endorsed:/usr/java/default/lib/endorsed OS: Linux 2.6.32-358.6.1.el6.x86_64 [amd64], file.encoding: UTF-8, user.name: root Heap sizes: current=366080k free=362250k max=5430272k Kernel version 6.1.1054 / 20.03.2015 15:48:03 Inet version 6.1.666 / 18.03.2015 18:27:10 Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 55; reject: 3064 ignore per minute access-request: 44938; accounting-update: 0 Antispam ban count: 157; used per minute: 33 Started: 01.04.2015 09:09:56 Uptime: 0 d 00:09:13 Memory total: 1 084 751 872; max: 2 863 661 056; free: 640 631 712 Memory pools: Non-heap memory[Code Cache]: max: 50 331 648; used: 6 007 616; peek: 6 018 432 Heap memory[PS Eden Space]: max: 1 017 643 008; used: 217 027 664; peek: 966 262 784 Heap memory[PS Survivor Space]: max: 4 718 592; used: 4 637 232; peek: 36 080 056 Heap memory[PS Old Gen]: max: 2 147 483 648; used: 222 455 264; peek: 222 455 264 Non-heap memory[PS Perm Gen]: max: 536 870 912; used: 31 770 032; peek: 31 770 032 Thread count: 333 Trees in cache: 0 Connections pool to Master status Idle: 9; Active: 52; maxActive: 300; maxIdle: 20 Код: radius 04-01/09:16:09 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full!
access 04-01/09:16:10 ERROR [auth-error-worker] BatchWorker - com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction 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.api.server.bean.InetAuthErrorDao.addError(InetAuthErrorDao.java:272) at ru.bitel.bgbilling.modules.inet.access.InetAuthErrorWorker.doTask(InetAuthErrorWorker.java:132) at ru.bitel.bgbilling.modules.inet.access.InetAuthErrorWorker.doTask(InetAuthErrorWorker.java:1) at ru.bitel.common.worker.BatchWorker.internalDoTask(BatchWorker.java:166) at ru.bitel.common.worker.BatchWorker.doTasks(BatchWorker.java:145) at ru.bitel.bgbilling.modules.inet.access.InetAuthErrorWorker.runWorker(InetAuthErrorWorker.java:108) at ru.bitel.common.worker.BatchWorker.internalRunWorker(BatchWorker.java:101) at ru.bitel.common.worker.BatchWorker.runImpl(BatchWorker.java:51) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:54) at java.lang.Thread.run(Thread.java:745) 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:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.Util.getInstance(Util.java:384) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1064) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2334) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2246) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at ru.bitel.bgbilling.server.util.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:109) at ru.bitel.bgbilling.modules.inet.api.server.bean.InetAuthErrorDao.addError(InetAuthErrorDao.java:192) ... 9 more connection 04-01/09:16:11 ERROR [sa-p-13-t-3] InetSaStateModifyEvent - Connection not found with id=5163232 connection 04-01/09:16:11 ERROR [sa-p-13-t-8] InetSaStateModifyEvent - Connection not found with id=5148035 access 04-01/09:16:12 ERROR [auth-error-worker] BatchWorker - com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction 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.api.server.bean.InetAuthErrorDao.addError(InetAuthErrorDao.java:272) at ru.bitel.bgbilling.modules.inet.access.InetAuthErrorWorker.doTask(InetAuthErrorWorker.java:132) at ru.bitel.bgbilling.modules.inet.access.InetAuthErrorWorker.doTask(InetAuthErrorWorker.java:1) at ru.bitel.common.worker.BatchWorker.internalDoTask(BatchWorker.java:166) at ru.bitel.common.worker.BatchWorker.doTasks(BatchWorker.java:145) at ru.bitel.bgbilling.modules.inet.access.InetAuthErrorWorker.runWorker(InetAuthErrorWorker.java:108) at ru.bitel.common.worker.BatchWorker.internalRunWorker(BatchWorker.java:101) at ru.bitel.common.worker.BatchWorker.runImpl(BatchWorker.java:51) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:54) at java.lang.Thread.run(Thread.java:745) 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:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) |
Автор: | Phricker [ 01 апр 2015, 12:20 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Эта строчка вселяет оптимизм и уверенность в завтрашнем дне Цитата: ignore per minute access-request: 44938; accounting-update: 0
|
Автор: | stark [ 01 апр 2015, 12:23 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
нужен результат запроса Код: show engine innodb status
|
Автор: | Phricker [ 01 апр 2015, 12:30 ] | ||
Заголовок сообщения: | Re: [6.1] Deadlock found | ||
Прикрепил в архиве результат Код: mysql -uroot -p -e "show engine innodb status \G"
|
Автор: | Phricker [ 01 апр 2015, 12:31 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Но сейчас уже deadlock не сыплет. Только Код: radius 04-01/09:18:09 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full!
radius 04-01/09:18:39 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:19:09 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:19:39 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:20:09 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:20:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:21:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:21:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:22:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:22:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:23:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:23:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:24:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:24:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:25:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:25:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:26:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:26:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:27:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:27:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:28:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:28:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:29:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:29:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:30:10 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! radius 04-01/09:30:40 ERROR [InetRadiusListener] RadiusListener - RadiusListener authentication queue is full! |
Автор: | Phricker [ 01 апр 2015, 12:35 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Текущий конфиг NAS'а Код: access.group=1
accounting.deviceTypeIds=1 accounting.tariffication.checkPrice=1 accounting.worker.1.tariffication.1.batchSize=100 accounting.worker.1.tariffication.1.delay=1 accounting.worker.1.tariffication.1.minDeltaAmount=0 accounting.worker.1.thread.count=1 accounting.worker.1.tracking.1.batchSize=100 accounting.worker.1.tracking.1.delay=2 accounting.worker.2.flushing.1.batchSize=500 accounting.worker.2.flushing.1.delay=2 accounting.worker.2.flushing.1.minDeltaAccount=0 accounting.worker.2.thread.count=1 accounting.worker.3.finishing.1.batchSize=500 accounting.worker.3.finishing.1.delay=2 accounting.worker.3.thread.count=1 antispam.ban.time=900 antispam.key.attributes=User-Name,Calling-Station-Id antispam.reject.count=2 antispam.reject.per.time=60 client.gui.expand.device.tree=0 connection.close.timeout=1300 connection.disable.close.timeout=1300 connection.disable.suspend.timeout=900 connection.finish.timeout=5 connection.start.fromAccept=1 connection.suspend.timeout=300 connector.http=127.0.0.1:8080 connector.https=*:8443 context.path=/bgbilling contract.status.active.codes=0 contract.status.suspend.codes=2,3,4,5,6 db.maxActive=300 db.maxIdle=20 db.validationTimeout=10 deviceId=1713 ip.resource.categoryId=41,45,46 nas.radius.deviceTypeIds=17,18 nas.radius.key.deviceTypeIds=2 nas.radius.realm.default.attributes=Acct-Interim-Interval=300 nas.radius.realm.default.ipCategories=45 nas.radius.username.ignoreCase=1 nas.radius.username.removeDomain=1 nas.radius.username.removeWhitespace=1 port.admin=2005 radius.deviceTypeIds=17,18 radius.key.deviceTypeIds=2 radius.realm.default.attributes=Acct-Interim-Interval=300 radius.realm.default.ipCategories=45 radius.username.ignoreCase=1 radius.username.removeDomain=1 radius.username.removeWhitespace=1 serv.login.chars=1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ serv.login.chars.description=Логин может содержать только цифры и латинские буквы serv.password.chars=1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ serv.password.chars.auto=1234567890abcdefghijklmnopqrstuvwxyz serv.password.chars.description=В пароле допустимы только цифры и латинские буквы. serv.password.length.auto=6 serv.password.length.max=16 serv.password.length.min=6 session.split.onTariffOption=1 web.menuItem1=Отчет по сессиям Inet web.menuItem2=Смена пароля на логины Inet web.menuItem3=none |
Автор: | Phricker [ 01 апр 2015, 12:49 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Снова появилось Код: ------------------------
LATEST DETECTED DEADLOCK ------------------------ 150401 9:48:09 *** (1) TRANSACTION: TRANSACTION 834DE69F8, ACTIVE 0 sec fetching rows mysql tables in use 6, locked 6 LOCK WAIT 6 lock struct(s), heap size 1248, 150 row lock(s) MySQL thread id 843969, OS thread handle 0x7fb90dcb4700, query id 16253231076 10.0.6.8 billing Searching rows for update UPDATE inet_auth_error_12_201504 SET lastTime='2015-04-01 09:48:09', count=count+1, logCoordinateRecordId=1928297 WHERE lastTime>'2015-04-01 08:48:09' AND lastTime<'2015-04-01 09:58:09' AND deviceId=2 AND contractId=6186 AND servId=2572 AND code=11 LIMIT 1 *** (1) WAITING FOR THIS LOCK TO BE GRANTED: RECORD LOCKS space id 1045112 page no 10 n bits 152 index `GEN_CLUST_INDEX` of table `bgbilling`.`inet_auth_error_12_201504` /* Partition `p20150401` */ trx id 834DE69F8 lock_mode X locks rec but not gap waiting *** (2) TRANSACTION: TRANSACTION 834DE69F5, ACTIVE 0 sec fetching rows mysql tables in use 6, locked 6 395 lock struct(s), heap size 47544, 6088 row lock(s) MySQL thread id 843913, OS thread handle 0x7fb90b720700, query id 16253231061 10.0.6.8 billing Searching rows for update UPDATE inet_auth_error_12_201504 SET lastTime='2015-04-01 09:48:09', count=count+1, logCoordinateRecordId=1926667 WHERE lastTime>'2015-04-01 08:48:09' AND lastTime<'2015-04-01 09:58:09' AND deviceId=1713 AND contractId=149726 AND servId=140043 AND code=11 LIMIT 1 *** (2) HOLDS THE LOCK(S): RECORD LOCKS space id 1045112 page no 10 n bits 152 index `GEN_CLUST_INDEX` of table `bgbilling`.`inet_auth_error_12_201504` /* Partition `p20150401` */ trx id 834DE69F5 lock_mode X locks rec but not gap *** (2) WAITING FOR THIS LOCK TO BE GRANTED: RECORD LOCKS space id 1045112 page no 8 n bits 152 index `GEN_CLUST_INDEX` of table `bgbilling`.`inet_auth_error_12_201504` /* Partition `p20150401` */ trx id 834DE69F5 lock_mode X locks rec but not gap waiting *** WE ROLL BACK TRANSACTION (1) |
Автор: | Phricker [ 01 апр 2015, 13:47 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Перезапустил все вплоть до БД. Код: [root@bgbilling BGPPPoEAccess]# ./access_status.sh
Java Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM [1.7.0_72] /usr/java/jdk1.7.0_72/jre Runtime name: 55519@bgbilling Java endorsed dirs: /lib/endorsed:/usr/java/default/lib/endorsed OS: Linux 2.6.32-358.6.1.el6.x86_64 [amd64], file.encoding: UTF-8, user.name: root Heap sizes: current=366080k free=362250k max=5430272k Kernel version 6.1.1054 / 20.03.2015 15:48:03 Inet version 6.1.666 / 18.03.2015 18:27:10 Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 100; reject: 2821 ignore per minute access-request: 42328; accounting-update: 0 Antispam ban count: 49; used per minute: 1 Started: 01.04.2015 10:37:41 Uptime: 0 d 00:07:53 Memory total: 728 236 032; max: 2 863 661 056; free: 372 794 816 Memory pools: Non-heap memory[Code Cache]: max: 50 331 648; used: 5 187 456; peek: 5 207 616 Heap memory[PS Eden Space]: max: 1 020 264 448; used: 130 370 760; peek: 781 189 120 Heap memory[PS Survivor Space]: max: 4 718 592; used: 4 489 984; peek: 34 601 800 Heap memory[PS Old Gen]: max: 2 147 483 648; used: 220 580 472; peek: 220 580 472 Non-heap memory[PS Perm Gen]: max: 536 870 912; used: 31 496 152; peek: 31 496 152 Thread count: 328 Trees in cache: 0 Connections pool to Master status Idle: 3; Active: 57; maxActive: 300; maxIdle: 20 |
Автор: | Phricker [ 01 апр 2015, 14:08 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Как-то поторопить можно? Позвонить / написать в HD (в котором зачастую время реакции больше)? |
Автор: | Phricker [ 01 апр 2015, 14:09 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Позвонить не катит. Трубку не берут ![]() |
Автор: | Phricker [ 01 апр 2015, 14:31 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
На DialUp модуле, даже с учетом того, что он все сессии сбрасывал первого числа, подобного не было. |
Автор: | vkulakov [ 01 апр 2015, 14:38 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
А почему у вас так много ошибок авторизации? Может кто-то пытается поломать вас??? В нашей сети всякие левые чуваки тоже постоянно ломились, создавая большой поток ошибок и засирая логи. Мы ввели ограничение на количество попыток авторизации с одного MAC-адреса и стало значительно легче ![]() Если в биллинге починять DeadLock, то всё-равно нет гарантии, что биллинг справиться с ещё большим потоком ошибок в будущем. Предлагаю вам ввести ограничения, аналогичные нашим, если это, конечно, применимо к вашей схеме. |
Автор: | Phricker [ 01 апр 2015, 14:39 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
activemq.log такими записями полнится. Код: 2015-04-01 11:37:04,702 | WARN | Setup of JMS message listener invoker failed for destination 'example.A' - trying to recover. Cause: User bill is not authorized to read from: queue://example.A | org.springframework.jms.listener.Default MessageListenerContainer | DefaultMessageListenerContainer-707 2015-04-01 11:37:04,708 | INFO | Connector vm://localhost Stopped | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-707 2015-04-01 11:37:04,709 | WARN | Broker localhost not started so using activeMQ instead | org.apache.activemq.broker.BrokerRegistry | DefaultMessageListenerContainer-707 2015-04-01 11:37:04,709 | INFO | Connector vm://localhost Started | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-707 2015-04-01 11:37:09,761 | WARN | Setup of JMS message listener invoker failed for destination 'example.A' - trying to recover. Cause: User bill is not authorized to read from: queue://example.A | org.springframework.jms.listener.Default MessageListenerContainer | DefaultMessageListenerContainer-708 2015-04-01 11:37:09,772 | INFO | Connector vm://localhost Stopped | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-708 2015-04-01 11:37:09,772 | WARN | Broker localhost not started so using activeMQ instead | org.apache.activemq.broker.BrokerRegistry | DefaultMessageListenerContainer-708 2015-04-01 11:37:09,772 | INFO | Connector vm://localhost Started | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-708 2015-04-01 11:37:14,846 | WARN | Setup of JMS message listener invoker failed for destination 'example.A' - trying to recover. Cause: User bill is not authorized to read from: queue://example.A | org.springframework.jms.listener.Default MessageListenerContainer | DefaultMessageListenerContainer-709 2015-04-01 11:37:14,853 | INFO | Connector vm://localhost Stopped | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-709 2015-04-01 11:37:14,853 | WARN | Broker localhost not started so using activeMQ instead | org.apache.activemq.broker.BrokerRegistry | DefaultMessageListenerContainer-709 2015-04-01 11:37:14,853 | INFO | Connector vm://localhost Started | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-709 2015-04-01 11:37:19,939 | WARN | Setup of JMS message listener invoker failed for destination 'example.A' - trying to recover. Cause: User bill is not authorized to read from: queue://example.A | org.springframework.jms.listener.Default MessageListenerContainer | DefaultMessageListenerContainer-710 2015-04-01 11:37:19,946 | INFO | Connector vm://localhost Stopped | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-710 2015-04-01 11:37:19,946 | WARN | Broker localhost not started so using activeMQ instead | org.apache.activemq.broker.BrokerRegistry | DefaultMessageListenerContainer-710 2015-04-01 11:37:19,947 | INFO | Connector vm://localhost Started | org.apache.activemq.broker.TransportConnector | DefaultMessageListenerContainer-710 В Web консоли ActiveMQ Number Of Pending Messages по нулям везде |
Автор: | Phricker [ 01 апр 2015, 14:41 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Первое число. У многих абонентов нет денег. И у многих роутеры. В мониторе ошибок в основном "[11] Договор приостановлен". Нет "Логин не найден" либо их очень мало. Антиспам был включен Код: antispam.key.attributes=User-Name,Calling-Station-Id antispam.reject.count=2 antispam.reject.per.time=60 antispam.ban.time=900 Включил только по Calling-Station-Id и per.time сделал 180. Проверим |
Автор: | Amir [ 01 апр 2015, 14:46 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Попробуйте указать в корневом устройстве authError.update=0 и перечитать конфигурацию. Это переключает запись ошибок из режима счетчика просто в добавление, что должно исключить deadlockи |
Автор: | Amir [ 01 апр 2015, 14:55 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Сейчас запись в auth_error идет асинхронно в одном потоке. У вас больше одного Access'а? Может быть поэтому в mysql возникают deadlock'и. Иначе вроде бы вообще не должно быть deadlockов таких. Еще можно добавить так: authError.async.maxQueueSize=5000 authError.async.timeout=50 Очередь на запись ошибок и сколько миллисекунд ждать добавления в очередь, если она полна (т.е. если не получится добавить в очередь - запись об ошибке подключения просто не добавится). Должно уменьшить последствия, если есть проблемы с auth_error. Возможно с такими параметрами можно оставить и authError.update=1 |
Автор: | Phricker [ 01 апр 2015, 14:58 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Амир вы волшебник! Хотя документацию все таки следовало бы дополнить Я выставил Код: antispam.key.attributes=Calling-Station-Id antispam.reject.count=2 antispam.reject.per.time=180 antispam.ban.time=900 Потом через некоторое время выставил то, что вы предложили. Получил Код: Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 92; reject: 503 ignore per minute access-request: 0; accounting-update: 0 Antispam ban count: 10088; used per minute: 69566 Потом убрал ваше и получил растущий счетчик. Код: Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 85; reject: 1358 ignore per minute access-request: 574; accounting-update: 0 Antispam ban count: 3; used per minute: 65957 Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 81; reject: 1463 ignore per minute access-request: 1565; accounting-update: 0 Antispam ban count: 3; used per minute: 63713 Сейчас после того как поставил ваше и оставил антиспам Код: Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 69; reject: 308 ignore per minute access-request: 0; accounting-update: 0 Antispam ban count: 10127; used per minute: 69152 В режиме authError.update=1 не работает антиспам что ли? |
Автор: | Phricker [ 01 апр 2015, 14:59 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Amir писал(а): У вас больше одного Access'а? Может быть поэтому в mysql возникают deadlock'и. Их три. PPPoE / IPOE / ServiceIPOE Разные деревья устройств. |
Автор: | Amir [ 01 апр 2015, 15:05 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Нашел видимо основную проблему - записывает в auth_error то асинхронно, вот только commit вызывает не на каждый запрос. Что создает благоприятную среду для deadlock'ов. Нет, не должно влиять на антиспам - антиспам вызывается в самом начале. |
Автор: | Amir [ 01 апр 2015, 15:06 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Цитата: Нашел видимо основную проблему - записывает в auth_error то асинхронно, вот только commit вызывает не на каждый запрос. А нет, вызывает. Для каждого UPDATE.
Что создает благоприятную среду для deadlock'ов. |
Автор: | Phricker [ 01 апр 2015, 15:09 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Но если антиспам вызывает в самом начале, почему он не добавил их всех в банлист как сейчас, и не работал себе спокойно дальше? Код: Antispam ban count: 10536; used per minute: 67812
|
Автор: | Phricker [ 01 апр 2015, 15:11 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
В начале то у него было Код: Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 55; reject: 3064 ignore per minute access-request: 44938; accounting-update: 0 Antispam ban count: 157; used per minute: 33 Даже с учетом того, что антиспам был настроен как User-Name,Calling-Station-Id и всего на 15 минут, то все равно мало, как по мне. |
Автор: | Amir [ 01 апр 2015, 15:14 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Для антиспама похоже сейчас не работает перечитать конфигурацию - нужно перезапускать - может поэтому так получилось? |
Автор: | Phricker [ 01 апр 2015, 15:16 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Я раза три перезапускал access после того как стартовал тему. Но тогда стояли настройки Код: antispam.ban.time=900 antispam.key.attributes=User-Name,Calling-Station-Id antispam.reject.count=2 antispam.reject.per.time=60 Но эти настройки стояли и на DialUp. И эти настройки там стоят уже давно. |
Автор: | Phricker [ 01 апр 2015, 15:18 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Ради теста можно убрать authError.update=0 оставив текущие настройки антиспама. И перечитать конфиг. И проверить поднимается ли кол-во игнорируемых запросов. |
Автор: | Amir [ 01 апр 2015, 17:27 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
По коду вроде никак не должно влиять. В следующем обновлении будет по умолчанию authError.async.maxQueueSize=5000 authError.async.timeout=50 а также ожидание следующей попытки добавления записи после ошибки добавления не 1 секунда, а случайно 50, 300 или 550 миллисекунд (чтобы при возникновении deadlock'а у одного из Access'ов было больше времени на единоличную запись). |
Автор: | Phricker [ 01 апр 2015, 18:06 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Стоит Код: authError.update=0 antispam.key.attributes=Calling-Station-Id antispam.reject.count=2 antispam.reject.per.time=180 antispam.ban.time=900 Код: Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 80; reject: 1233 ignore per minute access-request: 0; accounting-update: 0 Antispam ban count: 8571; used per minute: 56376 Поменял на Код: authError.update=1 authError.async.maxQueueSize=5000 authError.async.timeout=50 antispam.key.attributes=Calling-Station-Id antispam.reject.count=2 antispam.reject.per.time=180 antispam.ban.time=900 Поначалу было так Код: Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 72; reject: 3664 ignore per minute access-request: 0; accounting-update: 0 Antispam ban count: 57; used per minute: 53531 А сейчас Код: Radius:
accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 49; reject: 1359 ignore per minute access-request: 0; accounting-update: 0 Antispam ban count: 8163; used per minute: 55490 |
Автор: | Phricker [ 01 апр 2015, 18:09 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Спасибо Амир. Хотя все равно успели уже вздрючить ![]() |
Автор: | Amir [ 01 апр 2015, 18:40 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Цитата: А сейчас Он же в памяти держит баны, после перезапуска снова заполняет банлист, думаю поэтому так выглядит.
|
Автор: | Phricker [ 01 апр 2015, 18:53 ] |
Заголовок сообщения: | Re: [6.1] Deadlock found |
Да, я проверил, поэтому и удалил сообщение |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |