|
|
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
Может приложение выгружать если оно простаивает? Коннект 2байта, а приложение в миллион раз больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 21:49 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 21:58 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
unicornmirageЕсли на томкате поднять все 10 приложений, то pg_top будет показывать 100 idle-connections. Это, что проблема? Для чего нужны эти простаивающие? Чтобы быстро обслужить появившийся запрос не занимаясь оверхедом на открытие/закрытие соединения. Это основная функция пула. А дальше по простой арифметике. БД настроена на 1000 соединений. Есть 10 приложений. а) делим по 100 на приложения и получаем, что то приложение, которое массово что-то делает в основном висит на ожиданиях освободившегося соединения, зато все остальные приложения работают в штатном режиме и используется всего ~110 соединений из 1000. б) даем все один пул на 100 соединений. Если нагруженному приложению хватает 990 соединений то оно отрабатывает быстрее и остальные приложения работают в штатном режиме. Если же ему не хватает и надо гораздо больше, то все приложения начинают висеть на ожиданиях соединения. Ну и всякие плюсы-минусы в качестве премиальных (переоткрытие свободных соединений если замечена смерть сервера и переезд на новый узел и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 12:32 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
б) даем все один пул на 1000 соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 12:33 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевДля чего нужны эти простаивающие? ему они не нравились после определённого времени. Например, тем что висят через час полсе бездействия авторКоторый после некоторого времени бездействия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 13:08 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
Я бы придерживался следующей схемы - общий пул, но помимо общего ограничения на максимальное количество соединений в пуле я бы ограничил возможность каждого приложения. Например, 3 приложения, каждому нужно примерно 10, всего 30 соединений, но каждое отдельно взятое может использовать не более 15 (реальные цифры конечно же корректируются под реальный профиль нагрузки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 13:17 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
unicornmirageесли будет тысяча подключений из десяти пулов, и одна часть пулов будет менее загружена, чем другая - то часть idle-connections (из менее нагруженных пулов) не будет использоваться. Тоесть будут просто вхолостую висеть в памяти.И что??? Вы уже измерили это "вхолостую висеть в памяти" и именно эти байты/килобайты/мегабайты критичны для вашего приложения? P.S. Начало нулевых - давно в прошлом и сотни-тысяча подключений уже перестала быть сверхнагрузкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 18:35 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
Ну возьмите готовое решение : docker + tomcat + war все ... на каждый микросервис свой томкат в своем контейнере ... кластерезуйте и масштабируйте как душе угодно ... вот рабочий пример https://hub.docker.com/_/jetty/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 22:59 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
+ чтобы нагрузка не была такой большой использовать кеши https://blogs.oracle.com/theaquarium/entry/jcache_is_final_i_repeat и очереди ... при использовании очереди - вам и двух потоков/коннектов к БД на каждое приложение хватить должно ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2016, 23:08 |
|
||
|
Общий пул на весь servlet container, или отдельный пул на каждое web-приложение
|
|||
|---|---|---|---|
|
#18+
Atum1и очереди ... при использовании очереди - вам и двух потоков/коннектов к БД на каждое приложение хватить должно ... точно, и страничку специальную показывать с надписью "в очередь, сукины дети" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 10:31 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39279027&tid=2123862]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 407ms |

| 0 / 0 |
