как определить подходящий номер потока в JDK Executors newFixedThreadPool [duplicate]

Извинения за то, что вы не используете ваш точный SQL

Я использовал этот запрос для преодоления предупреждения Mysql.

SELECT count(*) AS cnt, `regions_id`
FROM regionables 
WHERE `regionable_id` = '115' OR `regionable_id` = '714'
GROUP BY `regions_id`
HAVING cnt > 1

обратите внимание на ключ для меня:

count(*) AS cnt
3
задан theMarceloR 14 January 2013 в 19:25
поделиться

4 ответа

Любой совет будет зависеть от ваших конкретных обстоятельств. 10 JVM на 32 ядрах будут предлагать по 3 потока каждый (игнорируя потоки сбора мусора, задачи таймера и т. Д.)

У вас также есть другие задачи. Планировщик гарантирует, что они работают, но нужно ли им реагировать? Более отзывчивый, чем JVM? Если вы используете Linux / Unix, вы также можете использовать приоритизацию (через nice), чтобы гарантировать, что определенные процессы не запугают CPU.

Наконец, вы используете 10 JVM. Будет ли это причиной пейджинга? Если это так, это будет медленным, и вам может быть лучше работать с меньшим количеством JVM, чтобы не потреблять столько памяти.

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

1
ответ дан Brian Agnew 23 August 2018 в 15:53
поделиться

К сожалению, это трудно понять, поскольку программы обычно не знают, что еще есть или может происходить в одном окне.

«простой» выход состоит в том, чтобы настроить размер пула. это позволяет пользователю, который управляет программой / box, определять, сколько потоков будет выделено вашей программе (предположительно, используя свои знания об общей рабочей нагрузке коробки).

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

0
ответ дан jtahlborn 23 August 2018 в 15:53
поделиться

Как я могу определить размер пула для каждой программы / JVM?

Вы хотите, чтобы количество потоков приблизилось к 99% использованию и не более .

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

Если это невозможно по какой-то причине, вам нужно будет оценить, насколько пулы потоков должны быть сокращены. Попробуйте запустить один процесс и посмотрите на использование. Если говорят 40%, то я подозреваю, что десять процессов превысили 400%. то вы можете уменьшить размер пула в 4 раза.

1
ответ дан Peter Lawrey 23 August 2018 в 15:53
поделиться

Попробуйте выполнить grepping процессов, проверить диспетчер вершин / задач и мониторы производительности, чтобы проверить, действительно ли эта реализация влияет на вашу машину.

В этой статье содержится интересная информация о том, что вы пытаетесь реализовать: http://www.ibm.com/developerworks/library/j-jtp0730/index.html

0
ответ дан theMarceloR 23 August 2018 в 15:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: