forum.bitel.ru
http://forum.bitel.ru/

[6.1] Очередь в ActiveMQ
http://forum.bitel.ru/viewtopic.php?f=22&t=11201
Страница 1 из 1

Автор:  Phricker [ 01 дек 2015, 12:24 ]
Заголовок сообщения:  [6.1] Очередь в ActiveMQ

Этот скрин сделан в ~00:15Изображение

Эти скрины в ~01:10-15
ИзображениеИзображениеИзображениеИзображение


Во время снятия первого скриншота очередь сообщений изменялась. То чуть больше то чуть меньше. И в скором времени пропала. Первое число блокирование договоров и т.п.

На последних скринах очередь сообщений не менялась в течении минут 5-7.
Я снял jstack с процессов activemq, шедулера и сервера биллинга.
Потом через некоторое время (очередь сообщений все так же не менялась) я решил снять jmap с этих же процессов.
После того как я запустил jmap, очередь резко пропала. Так что я даже и не знаю попало ли туда что то (размер всех трех файлов 3,2Гб).
Запускал jmap потом сразу же jstack для каждого процесса.

Такое повторяется каждый месяц.
Хотел бы разобраться что же я такого натворил :)
Могу создать обращение в хд, только скажите как выложить для вас удобнее эти файлы? (Могу закинуть в дропбокс например).

Для PaymentEvent, например, activemq показывает кучу таких сообщений
Код:
"Topic  ActiveMQ.Advisory.Consumer.Queue.BG.Event.ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent" daemon prio=10 tid=0x00007facd8227000 nid=0x966f in Object.wait() [0x00007fab4d998000]
   java.lang.Thread.State: WAITING (on object monitor)
   at java.lang.Object.wait(Native Method)
   - waiting on <0x00000000c1b64e30> (a java.lang.Object)
   at java.lang.Object.wait(Object.java:503)
   at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:115)
   - locked <0x00000000c1b64e30> (a java.lang.Object)
   at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:41)
   
   
   "Queue:BG.Event.ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent" daemon prio=10 tid=0x00007fadd076c000 nid=0x9188 in Object.wait() [0x00007fae732f1000]
   java.lang.Thread.State: WAITING (on object monitor)
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:503)
   at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:115)
   - locked <0x00000000c0e9fbc8> (a java.lang.Object)
   at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:41)

Автор:  Phricker [ 01 дек 2015, 12:31 ]
Заголовок сообщения:  Re: [6.1] Очередь в ActiveMQ

Большое кол-во очереди с активацией/деактивацией тарифных опций вызвано скриптом вычисляющим кол-во месяцев в которых был активен договор и активация ему соответствующей опции.

Но скрипт судя по логу закончился гораздо раньше
Код:
GENERATE_TIME: 01.12.15 00:45:01
EXECUTION_STOP_TIME: 01.12.15 00:54:12
PROCESS_TIME: 551319

OUT:
Start
Process time: 551 s.


Тогда как jstack запускался в
Код:
2015-12-01 01:17:08
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.72-b04 mixed mode):


Деактивация опций делается следующим кодом

Код:
   /* ДЕАКТИВАЦИИ ОПЦИЙ */
   private void deactivate2month( int cid, Connection con, ContractTariffOptionActivateManager ctoa )
         throws Exception
   {
      String query = " SELECT id FROM contract_tariff_option WHERE cid = " + cid + " AND option_id = " + secondMonthOption + " AND time_to IS NULL";
      java.sql.PreparedStatement ps = con.prepareStatement( query );
      ResultSet rs = ps.executeQuery();
      while ( rs.next() )
      {
         int contractOptionId  = rs.getInt(1);
         try{
            ctoa.deactivateOption(User.USER_SERVER, cid, contractOptionId);
         }
         catch (Exception e)
         {
            error( "Невозможно деактивировать опцию 2 месяца на договоре: " + cid + ". ID опции: " + contractOptionId);
         }
      }
      rs.close();
      ps.close();
   }


Активация соответственно
Код:
/* АКТИВАЦИЯ ОПЦИЙ */
   private void activate2month( int cid, TariffOptionService toa )
         throws Exception
   {
      try
      {
         toa.contractTariffOptionActivate( cid, secondMonthOption, secondModeId, false );
      }
      catch (Exception e)
      {
         error( "Невозможно активировать опцию 2 месяца на договоре: " + cid);
      }
   }


Обращений к базе тоже много не было
Изображение

Изображение

Автор:  Phricker [ 01 дек 2015, 12:37 ]
Заголовок сообщения:  Re: [6.1] Очередь в ActiveMQ

Как пример абонент у которого не активировался договор по приходу платежа
Изображение
Изображение


Самое интересное что сейчас в ActiveMQ нет ни одного сообщения в очереди.

Вот я ему запустил начисление абонплат, по которой ясно что денег у него после платежа стало хватать.
Изображение

Автор:  Phricker [ 01 дек 2015, 12:43 ]
Заголовок сообщения:  Re: [6.1] Очередь в ActiveMQ

Этот все еще не активировался
Изображение

Автор:  Phricker [ 01 дек 2015, 12:47 ]
Заголовок сообщения:  Re: [6.1] Очередь в ActiveMQ

/admin/queues.jsp не показывает очереди по PaymentEvent.
Однако при снятии jstack есть вот такое в логах.

Код:
"Queue:BG.Event.ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent" daemon prio=10 tid=0x00007fadd076c000 nid=0x9188 in Object.wait() [0x00007fae732f1000]
   java.lang.Thread.State: WAITING (on object monitor)
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:503)
   at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:115)
   - locked <0x00000000c0e9fbc8> (a java.lang.Object)
   at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:41)


Изображение

Автор:  Phricker [ 01 дек 2015, 12:48 ]
Заголовок сообщения:  Re: [6.1] Очередь в ActiveMQ

Подскажите что делать?
Запрос
Код:
SELECT c.id, c.title, b.summa1+b.summa2-b.summa3-b.summa4 FROM contract AS c
LEFT JOIN contract_balance AS b ON b.cid = c.id
WHERE b.mm = 12 AND b.yy = 2015
AND b.summa1+b.summa2-b.summa3-b.summa4 > 0
AND c.status <> 0

выдает 129 договоров.

Если вам нет необходимости что-то еще снимать - я их активирую все.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/