Ciclo de vida del proceso

El arquetipo deja configuradas dos decisiones de ciclo de vida: graceful shutdown con un timeout calibrado contra Shedlock, y JMX deshabilitado por defecto. La justificacion de ambas vive en Decisiones de ciclo de vida.

Graceful shutdown

Propiedad Valor Notas

server.shutdown

graceful

Tras SIGTERM, el contenedor servlet deja de aceptar nuevas conexiones y drena las en vuelo. Detalle del mecanismo en Spring graceful shutdown.

spring.lifecycle.timeout-per-shutdown-phase

30s

Tope por fase del shutdown. Debe ser mayor que el lock-at-most-for mas alto de Shedlock (PT20S en los procesadores de outbox/inbox del arquetipo). Si se sube uno, subir el otro.

El descriptor del pod tiene que respetar el timeout — Spring drena hasta el limite configurado, pero K8s mata el proceso al cumplirse terminationGracePeriodSeconds (default 30s). Alinear ambos valores; un preStop con sleep de 5-10s antes del SIGTERM ayuda a propagar la salida del Endpoints al kube-proxy. Esa configuracion vive en el chart / manifest del despliegue, no en el arquetipo.

Durante el shutdown, ReadinessState pasa a REFUSING_TRAFFIC y /actuator/health/readiness devuelve OUT_OF_SERVICE — K8s deja de rutar requests nuevas mientras el servlet drena las vivas.

JMX

Propiedad Valor Notas

spring.jmx.enabled

false

Apaga el MBeanServer de Spring y los MBean exporters. Reduce overhead de arranque, footprint de memoria y superficie expuesta. Para re-habilitarlo puntualmente ver Si necesitas JMX.