powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / MyBatis и количество соединений
2 сообщений из 2, страница 1 из 1
MyBatis и количество соединений
    #39709169
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Вопрос будет совсем ламерский, но все же.

Для соединений с БД Postgres использую mybatis-3.4.5.

В настройках xml прописано:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>

                <property name="poolMaximumActiveConnections" value="10" />
                <property name="poolMaximumIdleConnections" value="2" />
                <property name="poolMaximumCheckoutTime" value="120000" />
                <property name="poolTimeToWait" value="10000" />
                <property name="poolPingQuery" value="select 1" />
                <property name="poolPingEnabled" value="true" />
                <property name="poolPingConnectionsNotUsedFor" value="900000" />
            </dataSource>



При работе приложения (core) в логах, периодически проскальзывает такая строка:

Код: sql
1.
Waiting as long as 10000 milliseconds for connection



В каких-то случаях один раз, в каких-то от 10 до 20 записей подряд.

В коде для каждого select/update/insert/delete прописываю код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession();
   try {
      HashMap insertMap = new HashMap();
      insertMap.put("id", id);
      insertMap.put("name", "First name");
      sqlSession.insert("insertElementaryMessage", insertMap);
      sqlSession.commit();
   } catch (Exception e) {
      sqlSession.rollback();
   } finally {
      sqlSession.close();
   }



1) Исходя из сообщений лога, получается, что в приложении в определенный момент времени создается больше подключений, чем указано в

<property name="poolMaximumActiveConnections" value="10" />

Или я не правильно мыслю?

2) Почему mybatis ждет 10000 мс, если, по идее, после каждого insert/update/delete/select стоит sqlSession.close();. То есть, теоретически, соединение закрывается сразу же после действия с БД (оное меньше 10 секунд).

Решит ли проблему увеличение данного параметра, например, до 50 или 100? По умолчанию, насколько я помню, в Postgres стоит ограничение в 100 открытых соединений.

Спасибо!
...
Рейтинг: 0 / 0
MyBatis и количество соединений
    #39709364
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подключись JMX-ом к приложению. Найди компонет который отвечает за пул. Там будет параметр типа
текущее число активных сессйи. Кликни мышкой. Он развернется в график. Понаблюдай. Если их больше чем 10
штук то будет видно что график упирается в потолок.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / MyBatis и количество соединений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]