Драйвер Maria DB JDBC использует слишком много ЦП

#spring-boot #hibernate #mariadb

#весенняя загрузка #спящий режим #mariadb

Вопрос:

Загрузка ЦП Tomcat на нашем сервере Tomcat огромна, и при использовании Java visual vm мы наблюдаем значительную загрузку ЦП драйверами Maria DB. Мы используем Spring Boot и JPA в наших приложениях.

Java Visual VM

Любые идеи о том, что может быть причиной этого, или как разобраться в этом дальше, и варианты решения этой проблемы?

Ответ №1:

Это поведение по умолчанию для соединителя mariadb / mysql, использующего socket.available() для извлечения всех данных из буфера сокета. Это в основном, если результирующий набор содержит огромные данные.

Если процессор важен, это можно отключить с помощью опции useReadAheadInput=false . Соединитель по-прежнему будет быстрым, только немного меньше для огромного набора результатов.

Мне просто интересно, какую среду вы используете, поэтому socket.available стоит так дорого?

Комментарии:

1. Я добавил опцию в соответствии с вашей рекомендацией, и на данный момент я еще не знаю результата. И Tomcat, и Maria DB находятся на одном сервере CentOS 7.X. И странная вещь: приложение, которое выполняет слишком много операций чтения, используется очень мало, всего несколько сотен запросов каждый день, а также не используется последовательно. Предполагается, что другое развертывание приложения записывает огромные объемы данных и считывает очень мало данных. Поэтому я не уверен, сработает ли ваша рекомендация, но я все равно постараюсь понять разницу.

2. @kiran Ваш URL для programsquare.com недоступен сегодня отсюда.