Подтвердить что ты не робот

Лучшее объяснение для partitionCount в BoneCP

Из официального документа BoneCP: http://jolbox.com/index.html?page=http://jolbox.com/configuration.html

partitionCount. Чтобы уменьшить конфликт блокировок и, таким образом, повысить производительность, каждый запрос на входящий запрос отбирает соединение из пула, который имеет нить-сродство, то есть пул [threadId% partition_count]. Чем выше это число, тем лучше производительность будет для случая, когда у вас много короткоживущих потоков. Помимо определенного порога, содержание этих бассейнов начнет оказывают негативное влияние на производительность (и только в случае, когда соединения в начале раздела заканчиваются).

По умолчанию: 2, минимум: 1, рекомендуется: 3-4 (но очень специфично для приложения)

Но это не так ясно и не имеет хорошего примера. Я запускаю обычную веб-службу с одновременным потоком 0-500. Что является хорошим значением и почему?

4b9b3361

Ответ 1

Таким образом, внутри BoneCP имеет количество подсчетов разделов соединений. Каждый раз, когда поток пытается работать с соединением, он принимает thread.getId() % partitionCount и работает с соединением из этого пула. И у вас будет maxConnectionsPerPartition * partitionCount количество соединений в целом.

Почему это положительно влияет на производительность? Ну, чтобы не использовать два потока одновременно на одном и том же соединении (очевидно, это было бы плохо), BoneCP должен сделать блокировку для освобождения или получения соединения. Но в то же время все остальные потоки, которые хотят сделать то же самое, должны ждать этого замка. Поэтому в некотором смысле вы можете выпустить или приобрести partitionCount количество подключений параллельно.

Какой номер для его установки? Я думаю, что # из ядер - хорошее начало, так как в любом случае вы не будете больше работать параллельно. Но кроме этого старайтесь предсказать, сколько потоков будет гоняться за соединениями, измерять и повторять.

Кстати, большая часть мира уже более десяти лет полагается на c3po, и, по сути, количество разделов установлено равным 1. Таким образом, вы не можете ошибиться с ним.