Пул соединений JDBC получает и закрывает частоту - PullRequest
0 голосов
/ 28 мая 2018

У меня есть приложение, где мне нужно хранить много событий в базе данных.События происходят с частотой 5000 событий в минуту, и общее количество событий может доходить до миллионов.

Я использую пул соединений c3po.Я планировал сделать так, чтобы ** получить одно соединение из пула для приложения ** и использовать то же соединение для сохранения всех событий, как показано ниже:

  1. Connection conn = // создать соединение
  2. Персистор персистор = новый перистор (conn) // вводит созданное выше соединение.

    persistor.persistEvent (Event e) {conn.write (e);}

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

Я запустил приложение и после сохранения около 600 000 событий я взял heapdump (используя: jmap -dump: format = b, file = test-dump.hprof[PID]), чтобы проверить, что происходит в куче.

Я мог видеть, что существует огромный объект "com.mchange.v2.c3p0.impl.NewPooledConnection", который потребляет 500 МБ кучи).При анализе объекта я увидел, что он содержит рекурсию вложенных объектов одного и того же объекта (com.mchange.v2.c3p0.impl.NewPooledConnection).

Итак, вопрос в том, является ли объект огромным, потому чтоЯ не возвращал соединение с пулом после каждой записи, или я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...