2010-11-29 2 views
2

Мы используем более старую версию ActiveMQ (5.3.2) (см.: Is activemq reliable?)Потребление памяти ActiveMQ через крышу (файл страницы) ... что делать?

Мы удалили упорство, потому что нам нужна была большая скорость. Наш рабочий может не отставать от сообщений, но, несмотря на то, что очередь обычно находится в ожидании 0, после обработки около 45000 сообщений (как правило, длина сообщения составляет 100 символов), файл страницы составляет 8 ГБ! Это не останавливается на достигнутом, но продолжается до 15 ГБ (наш сервер имеет 16-гигабайтную память)!

Остановка процесса ActiveMQ не очищает этот файл подкачки, он остается таким огромным неопределенно.

эти параметры мы используем:

<policyEntry queue=">" producerFlowControl="false" memoryLimit="2gb"> 
</policyEntry> 

и

<systemUsage> 
    <systemUsage> 
     <memoryUsage> 
      <memoryUsage limit="20 mb"/> 
     </memoryUsage> 
     <storeUsage> 
      <storeUsage limit="1 gb"/> 
     </storeUsage> 
     <tempUsage> 
      <tempUsage limit="100 mb"/> 
     </tempUsage> 
    </systemUsage> 
</systemUsage> 

Что нам нужно сделать, чтобы сохранить использование памяти в «нормальных» уровней?

Наш сервер: Windows 2003 (64 бит). ActivemQ (5.3.2), с битом Java64 (1.6.0__22)

ответ

1

Если память не освобождается даже после остановки ActiveMQ, у меня возникает соблазн сказать, что это ошибка в JDK. Рассматривали ли вы понижение до более стабильной версии? Также экспериментируйте с запуском этого с 32-разрядным JDK и посмотрите, можете ли вы воспроизвести проблему с меньшим значением максимальной памяти.

+0

afghani: Я уже понижен с 5.4.1 из-за непрерывного сбоя. Было бы здорово, если будет ясно, какая стабильная версия; ^) В любом случае, я попытаюсь посмотреть, происходят ли те же самые вещи в 32-битной версии Java. Хорошая идея. – Toad 2010-11-29 20:41:57

+1

@Toad: Я думаю, что он имел в виду понизить набор разработки Java до более ранней версии и платформы. – Bamieater 2010-12-01 08:11:17

1

У меня не возникло проблем с машиной Windows 7, с ActiveMQ 5.3.0, jdk1.6.0_18 (64 бит) и тестовой настройкой с PHP. С некоторыми тестовыми сценариями я написал 10.000.000 сообщений в очередь за 585 секунд. Это около 17000 сообщений в секунду. Все работает на одной машине (мой ноутбук, 4 ГБ памяти, процессор Intel i3) и использует сокеты TCP для подключения к очереди.

0

Вы можете разместить полную конфигурацию ActiveMQ? Установили ли вы постоянный = false в брокере ActiveMQ? Я думаю, что происходит то, что, поскольку вы отключили управление потоком и только позволили использовать брандмауэр на 20 мб - ваши сообщения выгружаются на диск во временном хранилище. Если persistent = false, этого не должно быть, но активируйте управление потоком - это поможет;)

Смежные вопросы