Увеличение количества нитей в весенней загрузке программно - PullRequest
0 голосов
/ 02 апреля 2019

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

В моем случае мне нужно сделать это программно.Сейчас я не знаю, как с этим справиться, потому что я новичок в Tomcat и Springboot.

Здесь я предоставляю код моего основного приложения, который должен работать в порту 80.

@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {
public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
configurableEmbeddedServletContainer.setPort(80);
}
}

}

Заранее спасибо!

1 Ответ

1 голос
/ 02 апреля 2019

Какой встроенный сервер вы используете?Вы можете использовать свойство в Tomcat server.tomcat.max-threads для управления количеством потоков.0 по умолчанию 200 потоков, используемых Tomcat.

Когда вы говорите

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

Вы заботитесь о производительности, так как слишком много запросов отправляется на общий ресурс, например, в базу данных?

Если вы не хотите настраивать необработанное число, а иметь как можно больше потоков HTTP, которые нужно обработать и обработать, вам следует заняться асинхронным вызовом в Spring.

Чтобы включить асинхронные вызовы в SpringBootApplication , выполните следующие действия:

@EnableSync
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}

Теперь вы сможете использовать метод, который возвращает Completable<Future> в вашем сервисе.class.

Кроме того, вы действительно не должны обрабатывать количество потоков в слое вашего веб-сервиса.Он действительно должен обрабатываться сервером приложений (Tomcat, Glassfish и т. Д.). Он будет обрабатывать и отправлять запросы вашим методам одновременно.

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

Смотрите здесь: Spring MVC Rest Services - число потоков (экземпляров контроллера)

Ссылка: https://www.e4developer.com/2018/03/30/introduction-to-concurrency-in-spring-boot/ https://spring.io/guides/gs/async-method/

...