powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
11 сообщений из 36, страница 2 из 2
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279027
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может приложение выгружать если оно простаивает?
Коннект 2байта, а приложение в миллион раз больше.
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279033
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123unicornmirage,
Почему вы все не конкретно?
Сколько байт в памяти занимает простаивающий коннект?

Вот статистика только одного пула (с помощью программы pg_top):

PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
10020 postgres 20 0 208M 9648K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57165) idle
10019 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57164) idle
10017 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57162) idle
10015 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57160) idle
10018 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57163) idle
10016 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57161) idle
10014 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57159) idle
10012 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57157) idle
10013 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57158) idle
10011 postgres 20 0 208M 7472K sleep 0:00 0.00% 0.00% postgres: postgres db1 127.0.0.1(57156) idle

Если на томкате поднять все 10 приложений, то pg_top будет показывать 100 idle-connections.
Я эту проблему решил, включив опции пула для pool sweeper. Который после некоторого времени бездействия, удаляет все idle-connections.
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279562
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageЕсли на томкате поднять все 10 приложений, то pg_top будет показывать 100 idle-connections.
Это, что проблема? Для чего нужны эти простаивающие? Чтобы быстро обслужить появившийся запрос не занимаясь оверхедом на открытие/закрытие соединения. Это основная функция пула.
А дальше по простой арифметике.

БД настроена на 1000 соединений. Есть 10 приложений.
а) делим по 100 на приложения и получаем, что то приложение, которое массово что-то делает в основном висит на ожиданиях освободившегося соединения, зато все остальные приложения работают в штатном режиме и используется всего ~110 соединений из 1000.
б) даем все один пул на 100 соединений. Если нагруженному приложению хватает 990 соединений то оно отрабатывает быстрее и остальные приложения работают в штатном режиме. Если же ему не хватает и надо гораздо больше, то все приложения начинают висеть на ожиданиях соединения.

Ну и всякие плюсы-минусы в качестве премиальных (переоткрытие свободных соединений если замечена смерть сервера и переезд на новый узел и т.п.).
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279565
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
б) даем все один пул на 1000 соединений.
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279615
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевДля чего нужны эти простаивающие?
ему они не нравились после определённого времени. Например, тем что висят через час полсе бездействия
авторКоторый после некоторого времени бездействия
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279620
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы придерживался следующей схемы - общий пул, но помимо общего ограничения на максимальное количество соединений в пуле я бы ограничил возможность каждого приложения.
Например, 3 приложения, каждому нужно примерно 10, всего 30 соединений, но каждое отдельно взятое может использовать не более 15 (реальные цифры конечно же корректируются под реальный профиль нагрузки).
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279869
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageесли будет тысяча подключений из десяти пулов, и одна часть пулов будет менее загружена, чем другая - то часть idle-connections (из менее нагруженных пулов) не будет использоваться. Тоесть будут просто вхолостую висеть в памяти.И что???
Вы уже измерили это "вхолостую висеть в памяти" и именно эти байты/килобайты/мегабайты критичны для вашего приложения?

P.S. Начало нулевых - давно в прошлом и сотни-тысяча подключений уже перестала быть сверхнагрузкой.
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279976
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну возьмите готовое решение :

docker + tomcat + war

все ... на каждый микросервис свой томкат в своем контейнере ... кластерезуйте и масштабируйте как душе угодно ...
вот рабочий пример https://hub.docker.com/_/jetty/
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39279980
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ чтобы нагрузка не была такой большой
использовать кеши
https://blogs.oracle.com/theaquarium/entry/jcache_is_final_i_repeat

и очереди ... при использовании очереди - вам и двух потоков/коннектов к БД на каждое приложение хватить должно ...
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39280105
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1и очереди ... при использовании очереди - вам и двух потоков/коннектов к БД на каждое приложение хватить должно ...
точно, и страничку специальную показывать с надписью "в очередь, сукины дети"
...
Рейтинг: 0 / 0
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
    #39283004
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage,

у вас вполне случай для использования pgbouncer
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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