Производительность веб-приложений Java в Windows 2003 по сравнению с Windows 2008 - PullRequest
4 голосов
/ 20 марта 2012

У меня есть Java Web / SIP-приложение, которое работает на Tomcat. Приложение было рассчитано на работу в Windows 2003 для 1000 одновременных сеансов с 4 ГБ ОЗУ и 4 виртуальными ЦП в виртуализированной среде.

Теперь приложение перенесено в Windows 2008, Tomcat по-прежнему 32-битный, а приложение скомпилировано с 32-битной Java, равно как и 32-битное приложение. С этой настройкой мой 2008 перф. Тест не работает так же, как и для работы с Windows 2003. Загрузка процессора достигает максимума, и многие вызовы сбрасываются.

У меня есть следующие вопросы здесь.

  1. Запускает ли 32-разрядное приложение в 64-разрядной среде дополнительное ЦП / память, что создает проблему здесь.

  2. Есть ли разница в производительности между Win 2003 и Win 2008.

  3. Требуется ли для Windows 2008 из-за 64-разрядной среды больше ЦП по сравнению с 2003 годом.

Ответы [ 3 ]

1 голос
/ 04 апреля 2012

Некоторое время назад у нас была похожая ситуация, и мы попытались переместить 32-битное приложение (приложение J2EE на основе Tomcat) на 64-битную машину.Мы наблюдаем за последствиями, с которыми вы сталкиваетесь.

Кстати, вы не упомянули, почему вы перешли на 64-битную ОС :).

Давайте ответим на ваши вопросы один за другим

Требует ли выполнение 32-разрядного приложения в 64-разрядной среде дополнительного ЦП / памяти, что создает проблему здесь.

В общем, да.Но это зависит и от архитектуры вашего процессора.Чтобы понять это, посмотрите, как Windows запускает 32-битное приложение на 64-битной машине.В 64-битной ОС есть подсистема, которая называется WoW64 ( 32-битная Windows в 64-битной Windows )

В основном есть два способа WoW64 делает это

  1. Эмуляция 32-битной инструкции.Это вычислительно очень дорого и, вероятно, является причиной скачка загрузки процессора.Это обычно имеет место при использовании с процессорами на базе Intel Itanium (IA-64).

  2. Переключение процессора в 32-битный режим из 64-битного режима.Здесь всякий раз, когда необходимо выполнить 32-битный прикладной поток, процессор переключается в 32-режим (режим совместимости) и затем переключается обратно в 64-битный режим.Это относительно быстрее, чем предыдущий механизм эмуляции.

Есть ли разница в производительности между Win 2003 и Win 2008.

Это очень субъективно.Это зависит от типа используемого вами оборудования.Даже если у вас 64-битная ОС и аппаратное обеспечение, многое зависит от типа аппаратного обеспечения, ЦП материнской платы и т. Д. 64-битная ОС разработана для использования превосходного аппаратного обеспечения , которое 32-битная ОС и машина не могут в силу ограниченийкак адресное пространство и т. д.

Требуется ли для Windows 2008 из-за 64-битной среды больше ЦП по сравнению с 2003.

Да.как упомянуто выше @EJP, у него есть других предложений .Более способная ОС потребует превосходного оборудования.Это может быть тот случай, когда ваше конкретное приложение может или не может нуждаться в каких-либо специфических функциях Win 2008.Вот почему вам нужно позвонить, чтобы перейти на 64-битную версию с 32-битной.Вот аналогичный пост на том же форуме.

Кстати, я не уверен, есть ли у вас возможность, но вы можете запустить тот же код без перекомпоновки (если вы не используете какие-либо библиотеки для конкретной платформы) на 64-битном Tomcat.

0 голосов
/ 09 апреля 2012

Я думаю, что ваша предыдущая установка SIP-приложения и Java была оптимизирована, а новая еще нет.Не существует различий в производительности для работы в сети и java между последним SP для Windows 2003 и последним SP для 2008 (на основе Vista), однако Win 2008 R2 работает быстрее с java благодаря более интеллектуальному сродству ЦП, которое работает даже в виртуальной машине.По сути, я бы посмотрел вашу Java, убедитесь, что вы используете 64-битную Java, если можете, что она работает с ключом -server и у вашего сборщика мусора есть опции, например -XX: + UseConcMarkSweepGC -XX: + UseParNewGC -XX: NewSize = 128m, также проверьте, установлены ли параметры java JAVA_OPTS = -Xmx3000M -server.

Также убедитесь, что вы используете последнюю версию Java, вы обновили Windows для своей системы, включая драйверы, а также обновили программное обеспечение для визуализации., BIOS, BMC, а также встроенное ПО для хранения.

И, наконец, просто проверьте диспетчер задач, действительно ли он имеет пиковое значение java, что ваше подключение к локальной сети (ping) не сбрасывает пакеты, и что у вас есть управление питанием вBIOS компьютера выключен.

Я бы порекомендовал вам перейти на Win 2008 R2 - на основе win 7.

Если вы используете публичное облако, это может не быть проблемой настроек,но просто облачный сервер разделяет ЦП с другим виртуальным сервером, поэтому ваше приложение застряло.

0 голосов
/ 20 марта 2012
  1. Не особенно.
  2. Да. Иногда это очень важно. Я вижу всевозможные задержки в программах, которые раньше работали со скоростью деформации.
  3. Да, но не из-за 64 бит, просто потому, что в нем больше.
...