2009-08-25 2 views

ответ

2

Для всех практических целей это ситуационное, оно действительно «зависит».

  • какие темы занимаются?
  • сколько памяти им нужно?
  • Сколько собирает сбор мусора?
  • Сколько у вас памяти?
  • Сколько у вас ЦП?
  • Насколько они быстры?

Приложения приложений Java EE App Server, как правило, не создают самих потоков. Скорее вы настраиваете пулы потоков. Я никогда не был в ситуации, когда возможность создания еще 10 потоков решала бы проблему, и некоторые ограничения на сервер приложений не позволяли мне это делать.

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

Почему вы задаете вопрос?

+0

Причина, по которой я прошу, beacuase, я хочу сделать некоторую асинхронную обработку внутри веб-сервисов. Исходный запрос, конечно же, будет обслуживаться потоком из пула потоков, определенного сервером приложений, но затем этот поток порождает, скажем, 5 дополнительных потоков для выполнения работы. Таким образом, общее количество потоков, которые потенциально может иметь сервер, - количество потоков обслуживания запросов * количество рабочих потоков на запрос + определенное количество фоновых потоков. Это число может быть довольно большим. Мне просто интересно, как JVM может вести себя в таком сценарии, прежде чем я что-то реализую :). –

+0

1) Темы обрабатывают запросы веб-сервисов и внутренне обращаются к базе данных и другим веб-службам 2 + 3) Сегодня с последовательной обработкой они тратят 5-6 МБ/запрос 4) Имеющаяся память: 2 ГБ 5) 1 CPU 6) зависит на обратном отклике системы –

+0

Многие серверы приложений имеют архивированные способы разрешить некоторый способ нереста дополнительных рабочих потоков контролируемым образом, асинхронные очереди заданий и т. д. Используя их, вы сможете получить баланс между нормальными потоками обслуживания и дополнительными рабочими потоками , Вполне возможно, что если веб-служба выполняет очень тяжелую работу, и операционная пара «submitJob, getJobResult» может работать хорошо. – djna

0

Это действительно не то, что вы можете узнать исключительно с Java VM. Это скорее ограничение оборудования/ОС, чем что-либо конкретное для виртуальной машины. Лучший способ узнать этот ответ - проверить с большим количеством потоков и посмотреть, где вы начинаете видеть падение производительности. См. Также this devx discussion.

+0

Спасибо. Ссылка была полезна. –

1

Это действительно зависит от конкретного оборудования, в котором вы работаете (количество процессоров, объем памяти и т. Д.), А также зависит от ОС (Solaris vs. Windows), поскольку базовая потоковая передача зависит от OS- обеспечил управление потоками. Это также зависит от самого приложения и сервера приложений, поскольку количество ресурсов, потребляемых каждым потоком, зависит от приложения.

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