2013-12-03 4 views
2

Я выполняю длительный пакетный процесс в IBM WebSphere Application Server v8.5.5.1, который получает данные из репозитория ECM и впоследствии конвертирует его в PDF-документ. Он содержит около 20 тыс. Небольших документов, которые составляют всю партию.Почему я не использую 100%?

Сейчас я получаю около 20 Docs/сек, но система находится только около 45-55% загрузки процессора, так что-то мешает мне, чтобы заставить его работать на полном газу

Я бегу в стандарте Windows 2012 R2 на HP Proliant DL385p Gen8 (32 ГБ оперативной памяти, 2 x AMD Opteron 6272 каждый с 16 ядрами 2,1 ГГц)

Все ресурсы локально хранятся, поэтому сетевой трафик не должен беспокоить.

Я также попытался записать выходные документы PDF в RAMDISK, но улучшения вообще нет.

Любые идеи о том, где я должен заглянуть, чтобы этот процесс использовал всю мощь моего сервера?

Спасибо!

PS: Пожалуйста прилагается эталонное изображение

enter image description here

CPU Usage graph

+1

Если я не ошибаюсь, использование процессора на 47% означает, что 8 из ваших 16 ядер находятся на полном дросселе. Правильно ли указан код? – Alexandre

+0

Я использую ThreadPoolExecutor (размер пула потоков) для многопоточности процесса. Мне также кажется, что он использует только 1 процессор, но Java должен охватывать все доступные процессоры, я уверен? – gvasquez

+1

Возможно, вам стоит взглянуть на монитор Ressource и убедиться, что ваше узкое место не находится на вашем жестком диске или в сети. Мне кажется, что такая деятельность быстро блокируется вводом-выводом. – Alexandre

ответ

5

Я думаю, что фактическая проблема в том, что вы полностью используете один процессор, но не другой.

Хорошей новостью является то, что вы, вероятно, можете легко использовать многопоточное приложение для использования обоих процессоров; просто настройте очередь задач и поиграйте с количеством рабочих потоков, которые у вас есть, пока вы не достигнете 100% использования.

+0

Как все указывалось на использование только одного процессора, я решил создать новый профиль WAS и запустить две партии параллельно, так как результат использования процессора, наконец, перепрыгнул более 50% до примерно 75%. Поэтому так или иначе IBM JVM все еще использует зеленые потоки или отдельная ThreadGroup (из ThreadPoolExecutor) привязаны только к одному процессору. – gvasquez