BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: 08 сен 2014, 17:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Такое сообщение появляется при попытке "завершить (зависшее) соединение" в Мониторе соединений. У нас для каждого абонента - два соединения, одно от DHCP релея, на котором терминируется влан абонента и второе - от ISG BRAS'а, когда траффик абонента пытается выйти в интернет.
Ошибка происходит только когда я хочу сбросить DHCP сессию (например абонент сменил роутер и нужно с другим маком получить IP)
Проблемы начали возникать совсем недавно, похоже связано с началом подключений в новом районе. Понимаю - вопрос производительности, но что тюнить?
Иногда вылетает и такое:
javax.xml.ws.soap.SOAPFailtException: java.lang.NullPointerException.

Полный лог:
Код:
javax.xml.ws.soap.SOAPFaultException: java.lang.NullPointerException
   at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:193)
   at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:134)
   at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:123)
   at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
   at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144)
   at com.sun.proxy.$Proxy35.connectionFinish(Unknown Source)
   at ru.bitel.bgbilling.modules.inet.api.client.monitor.InetMonitorPanel$10.actionPerformedImpl(InetMonitorPanel.java:410)
   at ru.bitel.common.client.AbstractBGUPanel.actionPerformed(AbstractBGUPanel.java:237)
   at ru.bitel.common.client.AbstractBGUPanel$DefaultAction.actionPerformed(AbstractBGUPanel.java:91)
   at ru.bitel.common.client.DelegateAction.actionPerformed(DelegateAction.java:21)
   at ru.bitel.common.client.BGSwingUtilites$1.actionPerformed(BGSwingUtilites.java:178)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.AbstractButton.doClick(Unknown Source)
   at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
   at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$400(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
   at ru.bitel.bgbilling.modules.inet.api.server.service.InetSessionServiceImpl.connectionFinish(InetSessionServiceImpl.java:249)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   at ru.bitel.bgbilling.kernel.container.service.server.ServiceInfo.invoke(ServiceInfo.java:101)
   at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke(AbstractJaxWsHandler.java:244)
   at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.access$1(JaxWsHandler.java:1)
   at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler$2.run(JaxWsHandler.java:336)
   at java.security.AccessController.doPrivileged(Native Method)
   at javax.security.auth.Subject.doAs(Subject.java:415)
   at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.invoke(JaxWsHandler.java:330)
   at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$ServiceInstanceResolver$1.invoke(AbstractJaxWsHandler.java:356)
   at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150)
   at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261)
   at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100)
   at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
   at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
   at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
   at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
   at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314)
   at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608)
   at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259)
   at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162)
   at ru.bitel.common.server.JaxWSAdapter.handle(JaxWSAdapter.java:388)
   at bitel.billing.server.Executer.doPost(Unknown Source)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:745)


В это же время accounting_status показывает:
Код:
./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
  Runtime name: 23833@XXX
  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: 18
  access-requests per minute accept: 0; reject: 0
  ignore per minute access-request: 0; accounting-update: 0

Started: 05.09.2014 16:36:18    Uptime: 2 d 22:27:54
Memory total: 130 547 712; max: 477 102 080; free: 60 992 312
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 5 428 480; peek: 5 439 232
  Heap memory[PS Eden Space]: max: 175 112 192; used: 10 362 072; peek: 160 432 128
  Heap memory[PS Survivor Space]: max: 524 288; used: 360 448; peek: 4 097 384
  Heap memory[PS Old Gen]: max: 357 564 416; used: 58 832 880; peek: 95 741 664
  Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 29 948 928; peek: 29 948 928
Thread count: 89
Trees in cache: 0
Connections pool to Master status Idle: 6; Active: 0; maxActive: 300; maxIdle: 20


В конф файлах Access'ов и Accounting'а:
Код:
<param name="threadCount">50</param>
<param name="maxQueueSize">300</param>


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
А если после этого обновить монитор - сессия точно остается?

P.S. Для нормальной смены роутера/компьютера есть параметр dhcp.connection.closeOnNew=1, которых закрывает все предыдущие DHCP-сессии при получении OFFER от абонента (подразумевается что возможна только одна DHCP-сессия у абонента).


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

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Amir писал(а):
А если после этого обновить монитор - сессия точно остается?


Да, как раз если понажимать пару раз на Текущие - ошибка и выходит, а сессия остается.

Amir писал(а):
P.S. Для нормальной смены роутера/компьютера есть параметр dhcp.connection.closeOnNew=1, которых закрывает все предыдущие DHCP-сессии при получении OFFER от абонента (подразумевается что возможна только одна DHCP-сессия у абонента).


А это мысль! Попробую.
Меня беспокоит что это первое проявление какого-то узкого места. Например почему accounting_status показывает 89 !!! потоков, хотя в конфигурации я ему разрешил 50. И это всего при десятках онлайн пользователей


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Кол-во потоков там показывается общее на все приложение. Там много других служебных потоков.
В среднем они все спят (wait), ждут события/пакеты и т.п, иначе бы загрузка процессора была 100%.


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Все приложения обновлены, т.е. билды совпадают с сервером?
Попробуйте указать в конфигурации модуля типы устройств, являющиеся аккаунтинг серверами
accounting.deviceTypeIds= (т.е. перенесите этот параметр из inet-access.xml в конфигурацию модуля, требуется перезапуск сервера/Access/Accounting).

Можно посмотреть что в activeMQ с очередью ru.bitel.bgbilling.modules.inet.accounting.event.InetConnectionCommandEvent.


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

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

Код:
  Клиент: вер. 6.1.773 / 22.08.2014 15:53:18
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_05
    ВНИМАНИЕ: Спецификация версии 1.8 не рекомендуется
  Сервер: вер. 6.1.949 / 22.08.2014 15:53:24
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_65

  card: вер. 6.1.199 / 22.08.2014 15:53:18
  inet: вер. 6.1.575 / 20.08.2014 19:03:26
  npay: вер. 6.1.176 / 05.08.2014 16:21:53
  reports: вер. 6.1.186 / 21.08.2014 16:54:31
  subscription: вер. 6.1.28 / 03.06.2014 19:29:00


Только сейчас заметил что Джава то у меня на клиенте стоит 1,8, не рекомендованная... Попробую даунгрейднуть. Может в этом дело.


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Вряд ли из-за этого. Попробуйте с accounting.deviceTypeIds. В случае с этим параметром в конфиге модуля обработка события завершения сессии по другому немного работает, оптимизированнее.


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

Зарегистрирован: 24 июн 2009, 17:49
Сообщения: 640
Карма: 10
Я правильно понимаю, что
accounting.deviceTypeIds
нужно указать в конфиге модуля Inet
и присвоить ему значение 10102 из inet.accounting.xml?
Код:
<!-- Уникальный числовой id приложения -->
<param name="app.id" value="10102"/>



т.е. accounting.deviceTypeIds=10102


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Нет, в inet-access.xml уже должен быть параметр accounting.deviceTypeIds
<param name="accounting.deviceTypeIds" value="xxx"/>
Эту строчку нужно из inet-access.xml убрать, а параметр указать в конфигурации модуля accounting.deviceTypeIds=


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

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


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

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


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

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


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

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


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

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