Al iniciar aplicaciones Spring Boot, normalmente utilizamos la configuración predeterminada proporcionada por los principiantes, que es suficiente en la mayoría de los casos. Sin embargo, si necesitamos rendimiento, se pueden realizar ajustes específicos, como se demostrará en la primera parte de este artículo.
Aplicaciones web, RESTFul, que usan Spring MVC, generalmente agregan la dependencia spring-boot-starter-web, que por defecto usa Tomcat como servidor web. Sin embargo, existen alternativas más interesantes, como Undertow, que es un servidor web de alto rendimiento, con una arquitectura asíncrona y sin bloqueo, que le permite manejar una gran cantidad de de conexiones simultáneas de manera eficiente, lo que lo hace adecuado para aplicaciones de alto rendimiento. No estamos diciendo que Tomcat sea malo, pero podemos darle una oportunidad a Undertow.
.Para que podamos usar Undertow como servidor web, debemos ignorar la dependencia spring-boot-starter-tomcat que spring-boot-starter-web ya agrega y luego agregue la resaca de arranque de resorte.
Usando pom.xml:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow
Usando build.gradle:
dependencies { implementation('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } implementation 'org.springframework.boot:spring-boot-starter-undertow' }
A través de application.properties o application.yml, podemos configurar cuántos subprocesos IO y cuántos subprocesos de trabajo queremos que use el servidor.
Usando aplicación.yml
server: undertow: threads: io: 4 worker: 64
Usando aplicaciones.properties
server.undertow.threads.io=4 server.undertow.threads.worker=64
E/S Subprocesos realizan operaciones sin bloqueo y nunca deben realizar operaciones de bloqueo, ya que son responsables de escuchar las conexiones que llegan a la aplicación y luego enviarlas a una cola de procesamiento. Un valor común es dos E/S Subprocesos por núcleo de CPU.
subprocesos de trabajo ejecutan operaciones de bloqueo, como solicitudes de servlet que fueron enviadas a la cola de procesamiento por E/S Subprocesos. El valor ideal depende de la carga de trabajo, pero generalmente se recomienda configurar alrededor de 10 subprocesos por núcleo de CPU.
Para obtener información más detallada y más opciones que se pueden explorar, simplemente vaya a la documentación de Undertow.
La compresión de datos es una característica que tiene como objetivo reducir el tamaño del cuerpo de las respuestas HTTP, lo que a su vez puede mejorar el rendimiento de nuestra aplicación al reducir la cantidad de datos transmitidos a través de la red.
Configurar la compresión de datos en Spring Boot es una tarea trivial, ya que admite esta funcionalidad.
Usando aplicación.yml
server: compression: enabled: true mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json min-response-size: 1024
Usando aplicaciones.properties
server.compression.enabled=true server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json server.compression.min-response-size=1024
server.compression.enabled: habilita/deshabilita la compresión.
server.compression.mime-types: Lista de tipos MIME que deben comprimirse.
server.compression.min-response-size: tamaño mínimo de "Content-Length" que es necesario para realizar la compresión.
Con esto cerramos la primera parte del artículo. En la siguiente parte, aprenderemos más sobre Hikari, JPA e Hibernate y cómo configurarlos para mejorar aún más el rendimiento de las aplicaciones Spring Boot.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3