La solución al problema de que no se puede conectar la base de datos de Camunda

Un proyecto de operador reciente usó el motor de flujo de trabajo de Camunda para organizar y ejecutar tareas. Se ejecutará una tarea cada 15 minutos para obtener indicadores de rendimiento de más de 800 elementos de red en el período anterior, y de acuerdo con las reglas de juicio del indicador en la regla predefinida. se utilizan para identificar si hay una alarma en el elemento de Red. El tiempo de ejecución de cada tarea es relativamente largo y tarda entre 6 y 7 minutos en completarse. Además, este motor de flujo de trabajo tiene muchas otras tareas que se ejecutan de manera irregular y la carga en todo el motor es relativamente alta. Luego, en el período de tiempo reciente, ha habido problemas frecuentes de que no se puede acceder a la API de Camunda. El mensaje de error es HTTP 500 Error, y el mensaje de error es el mensaje: "No se pudo abrir JPA EntityManager para la transacción; la excepción anidada es org. hibernate.exception.JDBCConnectionException: No se puede adquirir la conexión JDBC", escriba: "CannotCreateTransactionException"

Debido a que ejecutamos Camunda a través de la integración de Springboot, de acuerdo con este mensaje de error, pensé si fue causado por un grupo de conexión de base de datos insuficiente. También busqué en Internet y vi que la versión springboot 2.x hereda HikariCP para proporcionar servicios de conexión JDBC. El tamaño predeterminado del grupo de conexiones es 10. La base de datos back-end a la que accede nuestra Camunda es mysql, por lo que también inicio sesión en mysql y uso el siguiente comando para ver la cantidad total actual de conexiones y la cantidad de conexiones en uso:

select count(host) from information_schema.processlist where host like '123.123.123.123%';
select count(host) from information_schema.processlist where host like '123.123.123.123%' and command not like 'Sleep';

123.123.123.123 en esta declaración representa la dirección del servidor camunda.Si el comando no está dormido, significa que la conexión no está inactiva, sino que es una conexión activa.

Como se puede ver en los resultados del comando anterior, camunda actualmente solo crea un grupo de conexiones con un tamaño de 10. Debido a que nuestras tareas programadas son más complicadas y se ejecutan durante mucho tiempo, siempre ocuparán varias conexiones y no se liberarán a tiempo, y algunas conexiones se consumirán cuando se estén ejecutando otras tareas, por lo que los errores anteriores aparecerán de vez en cuando.

Después de encontrar la causa del problema, la solución es muy simple, en el proyecto springboot de camunda, agregue una configuración datasource.hikari.maximum-pool-size=100 al archivo application.properties para resolverlo.

Un pequeño episodio, cuando le comenté al personal de operación y mantenimiento sobre esta solución y les pedí que modificaran la configuración, pero se equivocaron y pensaron que era para modificar datasource.max-active, por lo que no se ha solucionado el problema. , y pasé mucho tiempo analizándolo, parece que en el futuro, es necesario confirmar que la modificación de la configuración se lleva a cabo de acuerdo con el plan.

Supongo que te gusta

Origin blog.csdn.net/gzroy/article/details/128133226
Recomendado
Clasificación