BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 10 окт 2014, 13:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Доброго дня,

Поддержу темы:
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&amp;characterEncoding=utf8&amp;allowUrlInLocalInfile=true&amp;zeroDateTimeBehavior=convertToNull&amp;jdbcCompliantTruncation=false&amp;queryTimeoutKillsConnection=true&amp;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&amp;characterEncoding=utf8&amp;allowUrlInLocalInfile=true&amp;zeroDateTimeBehavior=convertToNull&amp;jdbcCompliantTruncation=false&amp;queryTimeoutKillsConnection=true&amp;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 потоков кажутся немного большой цифрой. Что будет когда абонентов будет десять тысяч?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 окт 2014, 14:05 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Кол-во потоков не зависит от кол-ва абонентов. В Access их обычно 100-300 и больше зависит от настроек.
И десятки тысяч потоков в одном приложении сейчас не проблема (если они большую часть времени спят).

Можете дать доступ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 окт 2014, 14:34 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Периодически ловлю тоже самое. Около тысячи активных сессий, RenewalTime=300, IPAddressLeaseTime=600. Точно заметил такое поведение при удалении старых access/dhcp логов. Похоже, iowait сказывается, если запись в логи синхронна(?) обработке запросов. Хотя нагрузка то почти никакая, но ошибки такие периодически приходят. Может в access_status выводить статистику dhcp-requests per minute для понимания объема его работы?

Аккаунтинг тоже ругался на неуспеваемость обработки RADIUS-запросов во время удаления логов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 окт 2014, 14:36 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Amir писал(а):
Кол-во потоков не зависит от кол-ва абонентов. В Access их обычно 100-300 и больше зависит от настроек.
И десятки тысяч потоков в одном приложении сейчас не проблема (если они большую часть времени спят).

Можете дать доступ?


Сейчас будет ))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 окт 2014, 09:26 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Из-за ожидания записи логов может такое быть (см. через один пост выше) ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 окт 2014, 11:42 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Интересно что 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 у меня включен ))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 окт 2014, 15:54 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Пока все также...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 окт 2014, 19:28 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Выяснилось, что на raid контроллере не работал write cache... отсюда блокировка io и следовательно тормоза с activemq, который оказался ни в чем не виноват. Такие дела.
Огромное спасибо Amir'у за помошь!


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 1


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

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