Mac.getInstance () для HmacSHA1, требующего возрастов для выполнения

1

Недавно я столкнулся с проблемой развертывания с вызовом Mac.getInstance("HmacSHA1").
Для выполнения этого единственного вызова на этом конкретном сервере может потребоваться до 10 минут, в то время как на других компьютерах его выполнение выполняется мгновенно.

Использование ЦП также вызывает всплески во время вызова.

Здесь немного деталей на сервере:

  • ОС: CentOS 5.6 Final (ядро 2.6.35.8-16, i686);
  • JVM: Sun JDK 1.6.0_25 (32 бит);
  • CPU: процессор Intel Core2 Duo (E8400 @3,00 ГГц);
  • Mem: 2 ГБ ОЗУ;
  • Выделенный физический сервер.

Любые подсказки о том, что может быть проблемой здесь?

Теги:
hmacsha1

1 ответ

3
Лучший ответ

Я подозреваю, что у вас низкая системная энтропия для обеспечения безопасности случайных чисел. См. Эту страницу, чтобы проверить: Проверить доступную энтропию в Linux. И на этот вопрос есть ответы: Как решить проблему производительности с Java SecureRandom? В частности, этот вариант Java должен помочь вам:

-Djava.security.egd=file:/dev/./urandom

Это намного быстрее, но немного менее безопасно.

  • 0
    Кажется, не связано с энтропией. Я установил rng-utils и запустил rngd, доступная энтропия подскочила со 150ish до 1500-2000. Я как-то решил проблему вчера, переключившись на OpenJDK ... Есть идеи? Спасибо!
  • 1
    Хм, я вижу, вы говорили, что загрузка процессора увеличивается. Вы пытались профилировать его на этом сервере? Один простой способ проверить это просто посмотреть jstack и посмотреть, какие потоки часто находятся в состоянии RUNNABLE . Смотрите этот ответ для команды я обычно использую, просто заменить BLOCKED с RUNNABLE , так как вы видите спайки CPU вместо блокирующих проблем: stackoverflow.com/questions/5390317/...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню