Я участвую в проекте, где используется многопоточность. Для каждого вызова создается около 4-5 потоков (система была разработана для колл-центра такси). Проблема здесь в том, что после прочтения информации в очереди JMS должен появиться новый поток, чего не происходит. Эта проблема возникает случайно. Я ранее опубликовал аналогичный вопрос в StackOverflow, где мне посоветовали сделать инъекцию нагрузки.
После изучения распределения нагрузки я почувствовал, что провести тест на моем сервере разработки не представляется возможным, так как моя система будет доступна из потока вызовов, который контролирует доступ пользователя. Я потратил некоторое время на изучение настройки JVM и пула потоков. Приблизительно эта конкретная система обрабатывает около 14K-15K вызовов / день, и в часы пик она будет очень высокой (может достигать 400-500 вызовов, ожидающих в очереди), для каждого вызова должно создаваться около 4-5 потоков. Из логов я не вижу ничего похожего на OutOfMemoryError. Есть ли какая-либо другая причина, которая могла бы остановить порождение потока?
Мой конфиг JVM: xms: 128 м. Xmx: 1024 м.
Среда является Windows Server 32-бит, 4 ГБ оперативной памяти.
Поможет ли включение размера стека помочь порождать поток без каких-либо помех?
Я также изучаю возможность объединения потоков. При порождении фиксированного количества потоков мне нужно изучить, повлияет ли это на общую производительность системы?