Модель потока dubbo инициирует фиксированное количество потоков во время запуска?
Часть моего файла конфигурации dubbo:
<dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" />
В соответствии с документацией Дуббо означает вышеуказанный конфиг
Фиксированный размер пула потоков, и он создает потоки при запуске, никогда не выключается.
Но когда я запустил приложение, я использую jstack
чтобы увидеть, есть ли более 100 потоков, я нашел только около 40 потоков, и я не нашел ни одного dubbo-потоков. Так что же случилось?
1 ответ
Пул потоков, который вы создаете путем объявления dubbo:protocol
не единственный источник потоков в JVM. Обычно JVM запускает несколько служебных потоков, поэтому он может функционировать должным образом и поддерживать различные функции, например, финализаторы, ловушки отключения, RMI и т. Д. jstack
показывает названия потоков, большинство из которых вы должны уметь гуглить и понимать их назначение.
Ваш dubbo
Пул потоков, скорее всего, будет порождать новые потоки только при обработке входящих запросов.
Вот модель потока дуббо (http://dubbo.apache.org/en-us/docs/user/demos/thread-model.html), есть изображение, демонстрирующее модель потока дуббо, вы можете видеть, что только сервер имеет поток pool, что означает, что только провайдер dubbo имеет пул потоков, потому что ему необходимо отделить поток ввода-вывода от потока без ввода-вывода.