Конфигурация потоков для микросервисов, написанных на java/jersey/grizzly
Я разрабатываю систему на основе микроуслуг. Большинство сервисов развернуто как автономные процессы Джерси со встроенным веб-сервером Grizzly.
Предполагая, что многие из этих сервисов будут выполняться на одном компьютере, я должен изменить какую-либо конфигурацию потоков в Grizzly, чтобы предотвратить ситуацию, связанную с слишком большим количеством потоков на всей машине?
Какая модель потоков по умолчанию для Grizzly? Существует ли ограничение на количество потоков, которые может создать один веб-сервер?
1 ответ
Это зависит от того, что вы делаете с поступающими данными.
Если вам нужно обработать данные (время процессора> время io), то вам нужно сопоставить количество физических ядер с количеством потоков обработки данных.
Если большая часть времени тратится на ввод-вывод (извлечение / хранение данных), тогда вы можете начать с ядер * 2 и установить максимальное значение, которое вы должны определить при тестировании использования процессора и пропускной способности. Мне лично нравятся полномочия 4 на ядро (4, 16, 64, 256). Это быстро сузит вас до порядка.