forum.bitel.ru http://forum.bitel.ru/ |
|
dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзапросы http://forum.bitel.ru/viewtopic.php?f=44&t=9824 |
Страница 1 из 1 |
Автор: | survivor [ 10 окт 2014, 13:41 ] |
Заголовок сообщения: | dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзапросы |
Доброго дня, Поддержу темы: viewtopic.php?f=22&t=8892&p=73010&hilit=%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80+%D0%BD%D0%B5+%D1%83%D1%81%D0%BF%D0%B5%D0%B2%D0%B0%D0%B5%D1%82+%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%82%D1%8C+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B#p73010 viewtopic.php?f=6&t=6978&p=54206&hilit=%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80+%D0%BD%D0%B5+%D1%83%D1%81%D0%BF%D0%B5%D0%B2%D0%B0%D0%B5%D1%82+%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%82%D1%8C+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B#p54206 viewtopic.php?f=44&t=9390&p=78204&hilit=%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80+%D0%BD%D0%B5+%D1%83%D1%81%D0%BF%D0%B5%D0%B2%D0%B0%D0%B5%D1%82+%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%82%D1%8C+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B#p78204 Такая же ситуация. Приходит с периодичностью в несколько часов email такого типа: Код: ID события: dhcpLstnr.wait.thread Время регистрации события: 10.10.2014 06:04:33 Настройки inet-access.xml: Код: <?xml version="1.0" encoding="UTF-8"?> <application context="accounting"> <!-- Уникальное имя приложения --> <param name="app.name" value="BGInetAccounting"/> <!-- Уникальный числовой id приложения --> <param name="app.id" value="10102"/> <!-- Параметры подключения к БД --> <param name="db.driver" value="com.mysql.jdbc.Driver"/> <param name="db.url" value="jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&characterEncoding=utf8&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&queryTimeoutKillsConnection=true&connectTimeout=1000"/> <param name="db.user" value="***"/> <param name="db.pswd" value="***"/> <param name="db.validationTimeout" value="10"/> <!-- Параметры подключения к MQ --> <param name="mq.url" value="failover:(tcp://localhost:61616)"/> <param name="mq.user" value="***"/> <param name="mq.pswd" value="***"/> <!-- id модуля --> <param name="moduleId" value="2"/> <!-- id корневого устройства --> <param name="rootDeviceId" value="1"/> <!-- Внутренняя переменная приложения, не изменять --> <param name="commonIdentifierName" value="rootDeviceId"/> <!-- Параметры сохранения radius-пакетов в файлы логов --> <!-- Директория, в которую сохранять radius логи --> <param name="datalog.radius.dir" value="data/radius" /> <!-- Размер блока данных в файле лога, также размер буфера на лог файл --> <param name="datalog.radius.chunk.size" value="524288" /> <!-- Сжимать radius логи: 0 - не сжимать, 1 - zlib --> <param name="datalog.radius.compression.type" value="1" /> <!-- Создание Accounting --> <bean name="accounting" class="ru.bitel.bgbilling.modules.inet.accounting.Accounting"/> <context name="radius"> <!-- Создание MXBean для мониторинга радиуса --> <bean name="radiusStatusAccounting" class="ru.dsi.bgbilling.modules.inet.mxbean.RadiusStatusAccounting"> <param name="accounting">accounting</param> </bean> <!-- Cоздание процессора radius-пакетов --> <bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusHelperProcessor"/> <!-- Служебный ScheduledExecutorService, необходимый для dataLogger --> <scheduledExecutorService name="hrlydtlggr" corePoolSize="1"/> <!-- Cоздание dataLogger, сохраняющего radius-пакеты на диск (только один экземпляр) --> <bean name="radiusDataLogger" class="ru.bitel.bgbilling.modules.inet.radius.RadiusHourlyDataLogger"> <param name="scheduledExecutor">hrlydtlggr</param> </bean> <!-- Cоздание слушателя radius-пакетов на порту с передачей ему процессора и dataLogger --> <bean name="radiusListener" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusListener"> <constructor> <!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех --> <param name="host" value=""/> <!-- Порт, на котором будет открыт сокет --> <param name="port" value="1813"/> <!-- Размер буфера приема слушателя --> <param name="recvBufferSize">1 * 1024 * 1024</param> <!-- Рекомендуемый SO_RCVBUF сокета --> <param name="soRCVBUF"></param> <!-- Количество потоков-обработчиков --> <param name="threadCount">50</param> <!-- Максимальное количество пакетов в очереди на обработку --> <param name="maxQueueSize">300</param> <!-- Передача процессора --> <param name="processor">radiusProcessor</param> <!-- Режим работы, RadiusListener.Mode.accounting --> <param name="mode">RadiusListener.Mode.accounting</param> <!-- Передача setup --> <param name="setup">setup</param> <!-- Передача dataLogger --> <param name="dataLogger">radiusDataLogger</param> </constructor> </bean> </context> </application> Настройки inet-accounting.xml: Код: <?xml version="1.0" encoding="UTF-8"?> <application context="accounting"> <!-- Уникальное имя приложения --> <param name="app.name" value="BGInetAccounting"/> <!-- Уникальный числовой id приложения --> <param name="app.id" value="10102"/> <!-- Параметры подключения к БД --> <param name="db.driver" value="com.mysql.jdbc.Driver"/> <param name="db.url" value="jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&characterEncoding=utf8&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&queryTimeoutKillsConnection=true&connectTimeout=1000"/> <param name="db.user" value="***"/> <param name="db.pswd" value="***"/> <param name="db.validationTimeout" value="10"/> <!-- Параметры подключения к MQ --> <param name="mq.url" value="failover:(tcp://localhost:61616)"/> <param name="mq.user" value="***"/> <param name="mq.pswd" value="***"/> <!-- id модуля --> <param name="moduleId" value="2"/> <!-- id корневого устройства --> <param name="rootDeviceId" value="1"/> <!-- Внутренняя переменная приложения, не изменять --> <param name="commonIdentifierName" value="rootDeviceId"/> <!-- Параметры сохранения radius-пакетов в файлы логов --> <!-- Директория, в которую сохранять radius логи --> <param name="datalog.radius.dir" value="data/radius" /> <!-- Размер блока данных в файле лога, также размер буфера на лог файл --> <param name="datalog.radius.chunk.size" value="524288" /> <!-- Сжимать radius логи: 0 - не сжимать, 1 - zlib --> <param name="datalog.radius.compression.type" value="1" /> <!-- Создание Accounting --> <bean name="accounting" class="ru.bitel.bgbilling.modules.inet.accounting.Accounting"/> <context name="radius"> <!-- Создание MXBean для мониторинга радиуса --> <bean name="radiusStatusAccounting" class="ru.dsi.bgbilling.modules.inet.mxbean.RadiusStatusAccounting"> <param name="accounting">accounting</param> </bean> <!-- Cоздание процессора radius-пакетов --> <bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusHelperProcessor"/> <!-- Служебный ScheduledExecutorService, необходимый для dataLogger --> <scheduledExecutorService name="hrlydtlggr" corePoolSize="1"/> <!-- Cоздание dataLogger, сохраняющего radius-пакеты на диск (только один экземпляр) --> <bean name="radiusDataLogger" class="ru.bitel.bgbilling.modules.inet.radius.RadiusHourlyDataLogger"> <param name="scheduledExecutor">hrlydtlggr</param> </bean> <!-- Cоздание слушателя radius-пакетов на порту с передачей ему процессора и dataLogger --> <bean name="radiusListener" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusListener"> <constructor> <!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех --> <param name="host" value=""/> <!-- Порт, на котором будет открыт сокет --> <param name="port" value="1813"/> <!-- Размер буфера приема слушателя --> <param name="recvBufferSize">1 * 1024 * 1024</param> <!-- Рекомендуемый SO_RCVBUF сокета --> <param name="soRCVBUF"></param> <!-- Количество потоков-обработчиков --> <param name="threadCount">50</param> <!-- Максимальное количество пакетов в очереди на обработку --> <param name="maxQueueSize">300</param> <!-- Передача процессора --> <param name="processor">radiusProcessor</param> <!-- Режим работы, RadiusListener.Mode.accounting --> <param name="mode">RadiusListener.Mode.accounting</param> <!-- Передача setup --> <param name="setup">setup</param> <!-- Передача dataLogger --> <param name="dataLogger">radiusDataLogger</param> </constructor> </bean> </context> </application> Текущее состояние: Код: ./accounting_status.sh Java Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM [1.7.0_65] /opt/java/jdk1.7.0_65/jre Java endorsed dirs: /lib/endorsed:/opt/java/jdk/lib/endorsed OS: Linux 2.6.32-5-amd64 [amd64], file.encoding: ISO-8859-1, user.name: root Heap sizes: current=92160k free=90654k max=1363456k Kernel version 6.1.949 / 22.08.2014 15:53:24 Inet version 6.1.575 / 20.08.2014 19:03:26 Radius: accounting-requests per minute start: 0; stop: 0; update: 64 access-requests per minute accept: 0; reject: 0 ignore per minute access-request: 0; accounting-update: 0 Started: 10.10.2014 12:15:33 Uptime: 0 d 00:18:45 Memory total: 211 288 064; max: 477 102 080; free: 47 032 488 Memory pools: Non-heap memory[Code Cache]: max: 50 331 648; used: 4 050 752; peek: 4 056 128 Heap memory[PS Eden Space]: max: 167 247 872; used: 137 525 528; peek: 158 334 976 Heap memory[PS Survivor Space]: max: 524 288; used: 475 152; peek: 7 842 568 Heap memory[PS Old Gen]: max: 357 564 416; used: 26 254 896; peek: 26 254 896 Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 30 626 664; peek: 30 626 664 Thread count: 89 Trees in cache: 0 Connections pool to Master status Idle: 5; Active: 0; maxActive: 300; maxIdle: 20 Код: ./access_status.sh Java Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM [1.7.0_65] /opt/java/jdk1.7.0_65/jre Java endorsed dirs: /lib/endorsed:/opt/java/jdk/lib/endorsed OS: Linux 2.6.32-5-amd64 [amd64], file.encoding: ISO-8859-1, user.name: root Heap sizes: current=92160k free=90654k max=1363456k Kernel version 6.1.949 / 22.08.2014 15:53:24 Inet version 6.1.575 / 20.08.2014 19:03:26 Radius: accounting-requests per minute start: 0; stop: 0; update: 0 access-requests per minute accept: 0; reject: 0 ignore per minute access-request: 0; accounting-update: 0 Antispam ban count: 0; used per minute: 0 Started: 10.10.2014 11:58:23 Uptime: 0 d 00:37:11 Memory total: 228 065 280; max: 477 102 080; free: 84 025 552 Memory pools: Non-heap memory[Code Cache]: max: 50 331 648; used: 3 370 880; peek: 3 383 936 Heap memory[PS Eden Space]: max: 148 373 504; used: 95 722 272; peek: 157 810 688 Heap memory[PS Survivor Space]: max: 15 204 352; used: 11 750 744; peek: 11 750 744 Heap memory[PS Old Gen]: max: 357 564 416; used: 36 581 920; peek: 36 581 920 Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 30 248 480; peek: 30 248 480 Thread count: 277 Trees in cache: 0 Connections pool to Master status Idle: 5; Active: 0; maxActive: 300; maxIdle: 20 База: Код: mysql> show processlist; +--------+------+-----------------+-----------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +--------+------+-----------------+-----------+---------+------+-------+------------------+ | 117832 | bill | 127.0.0.1:44721 | bgbilling | Sleep | 15 | | NULL | | 117833 | bill | 127.0.0.1:44723 | bgbilling | Sleep | 10 | | NULL | | 117909 | bill | 127.0.0.1:44724 | bgbilling | Sleep | 9 | | NULL | | 118264 | bill | 127.0.0.1:44728 | bgbilling | Sleep | 9 | | NULL | | 118273 | bill | 127.0.0.1:49269 | bgbilling | Sleep | 2 | | NULL | | 118274 | bill | 127.0.0.1:59468 | bgbilling | Sleep | 32 | | NULL | | 118275 | bill | 127.0.0.1:44119 | bgbilling | Sleep | 2 | | NULL | | 118276 | bill | 127.0.0.1:44066 | bgbilling | Sleep | 2 | | NULL | | 118277 | bill | 127.0.0.1:60477 | bgbilling | Sleep | 27 | | NULL | | 118382 | bill | 127.0.0.1:44742 | bgbilling | Sleep | 5 | | NULL | | 118533 | bill | 127.0.0.1:35305 | bgbilling | Sleep | 6 | | NULL | | 118534 | bill | 127.0.0.1:50245 | bgbilling | Sleep | 2 | | NULL | | 118535 | bill | 127.0.0.1:42849 | bgbilling | Sleep | 5 | | NULL | | 118536 | bill | 127.0.0.1:60317 | bgbilling | Sleep | 8 | | NULL | | 118537 | bill | 127.0.0.1:49902 | bgbilling | Sleep | 4 | | NULL | | 118658 | bill | 127.0.0.1:44745 | bgbilling | Sleep | 9 | | NULL | | 118719 | bill | 127.0.0.1:44882 | bgbilling | Sleep | 10 | | NULL | | 118880 | root | localhost | bgbilling | Query | 0 | NULL | show processlist | +--------+------+-----------------+-----------+---------+------+-------+------------------+ 18 rows in set (0.00 sec) В системе всего 50 договоров и около 50 устройств (свичей). В онлайне 30 абонентов. При этом 277 потоков кажутся немного большой цифрой. Что будет когда абонентов будет десять тысяч? |
Автор: | Amir [ 10 окт 2014, 14:05 ] |
Заголовок сообщения: | Re: dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзап |
Кол-во потоков не зависит от кол-ва абонентов. В Access их обычно 100-300 и больше зависит от настроек. И десятки тысяч потоков в одном приложении сейчас не проблема (если они большую часть времени спят). Можете дать доступ? |
Автор: | barguzin2 [ 10 окт 2014, 14:34 ] |
Заголовок сообщения: | Re: dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзап |
Периодически ловлю тоже самое. Около тысячи активных сессий, RenewalTime=300, IPAddressLeaseTime=600. Точно заметил такое поведение при удалении старых access/dhcp логов. Похоже, iowait сказывается, если запись в логи синхронна(?) обработке запросов. Хотя нагрузка то почти никакая, но ошибки такие периодически приходят. Может в access_status выводить статистику dhcp-requests per minute для понимания объема его работы? Аккаунтинг тоже ругался на неуспеваемость обработки RADIUS-запросов во время удаления логов. |
Автор: | survivor [ 10 окт 2014, 14:36 ] |
Заголовок сообщения: | Re: dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзап |
Amir писал(а): Кол-во потоков не зависит от кол-ва абонентов. В Access их обычно 100-300 и больше зависит от настроек. И десятки тысяч потоков в одном приложении сейчас не проблема (если они большую часть времени спят). Можете дать доступ? Сейчас будет )) |
Автор: | barguzin2 [ 13 окт 2014, 09:26 ] |
Заголовок сообщения: | Re: dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзап |
Из-за ожидания записи логов может такое быть (см. через один пост выше) ? |
Автор: | survivor [ 13 окт 2014, 11:42 ] |
Заголовок сообщения: | Re: dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзап |
Интересно что iotop показывает иногда довольно не слабую нагрузку на винт: Код: avg-cpu: %user %nice %system %iowait %steal %idle 2.44 0.00 0.49 8.78 0.00 88.29 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 25.00 0.00 56.00 0.00 2312.00 41.29 0.48 8.50 6.29 35.20 ... avg-cpu: %user %nice %system %iowait %steal %idle 0.98 0.00 0.49 8.82 0.00 89.71 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 24.00 0.00 69.00 0.00 2720.00 39.42 0.46 6.67 5.39 37.20 iotop --accumulated: Код: Total DISK READ: 0.00 B/s | Total DISK WRITE: 45.65 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 282 be/4 root 8.00 K 1204.00 K 0.00 % 4.08 % [kjournald] 1579 be/4 mysql 0.00 B 7.08 M 0.00 % 1.22 % mysqld --basedir=/usr --datadir=/va~r/run/mysqld/mysqld.sock --port=3306 2207 be/4 root 0.00 B 872.00 K 0.00 % 1.05 % java -Dactivemq.home=../.. -Dactive~g.apache.activemq.console.Main start 1617 be/4 mysql 8.00 K 7.12 M 0.00 % 0.28 % mysqld --basedir=/usr --datadir=/va~r/run/mysqld/mysqld.sock --port=3306 2206 be/4 root 0.00 B 756.00 K 0.00 % 0.26 % java -Dactivemq.home=../.. -Dactive~g.apache.activemq.console.Main start 1365 be/4 root 0.00 B 112.00 K 0.00 % 0.25 % java -Dactivemq.home=../.. -Dactive~g.apache.activemq.console.Main start 2097 be/4 root 0.00 B 936.00 K 0.00 % 0.18 % java -Dnetworkaddress.cache.ttl=360~ation.server.Application inet-access 1777 be/4 root 0.00 B 112.00 K 0.00 % 0.09 % java -Dnetworkaddress.cache.ttl=360~ation.server.Application inet-access noatime у меня включен )) |
Автор: | survivor [ 13 окт 2014, 15:54 ] |
Заголовок сообщения: | Re: dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзап |
Пока все также... |
Автор: | survivor [ 14 окт 2014, 19:28 ] |
Заголовок сообщения: | Re: dhcpLstnr.wait.thread Сервер не успевает обрабатыватьзап |
Выяснилось, что на raid контроллере не работал write cache... отсюда блокировка io и следовательно тормоза с activemq, который оказался ни в чем не виноват. Такие дела. Огромное спасибо Amir'у за помошь! |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |