Является ли пул соединений лучшим способом для запуска множества экземпляров приложений на одном сервере (с MySQL)?

Я хочу настроить сервер tomcat с помощью версии сообщества mysql 5.1 (на win server 2008 x64) для запуска большого проекта на одной машине. У меня есть приложение gwt, и мне нужно запустить более 300 его экземпляров на одном сервере HP.

Каждый экземпляр использует отдельную базу данных MySQL (от db1 до db300), поэтому нужен отдельный пул соединений, это часть моей конфигурации пула соединений для db1 (аналогично другим dbs):

<Resource name="jdbc/mysql/db1" auth="Container" type="javax.sql.DataSource" initialSize="5" maxActive="100" maxIdle="20" maxWait="30000" removeAbandoned="true" removeAbandonedTimeout="5" validationQuery="select now();" .../>

Для 300 экземпляров количество активных подключений будет 300 * 100 = 30000 активных подключений!

Теперь я хочу знать, можно ли открыть такое огромное количество подключений к 300 базам данных MySQL на одном сервере.

Если нет, то каково решение, и если да, то сколько ресурсов (ОЗУ и ЦП) будет использовано?

Пул соединений - лучший способ или есть другой способ?

Если пул соединений - лучший выбор, то что может быть лучшей настройкой для моего раздела ресурсов для создания моих пулов?


person Ehsan Khodarahmi    schedule 11.04.2011    source источник


Ответы (1)


Количество активных подключений будет только 30000, если каждый из 300 экземпляров должен использовать 100 одновременно. Если они простаивают, они будут использовать только где-то между 1500 (от initialSize) до 6000 (от maxIdle) в зависимости от вашей конфигурации. Вероятно, вы захотите уменьшить эти значения, чтобы обрабатывать 300 экземпляров. Может быть, initialSize="2" maxActive="10" maxIdle="5" достаточно?

Если вы действительно ожидаете, что все экземпляры будут использовать такое количество подключений, то одного сервера, вероятно, будет недостаточно. Однако практически невозможно сказать, сколько оперативной памяти или процессора вам понадобится, это действительно зависит от того, что вы делаете и какой активности вы ожидаете.

person WhiteFang34    schedule 11.04.2011
comment
потому что мое приложение является приложением GWT, поэтому ему необходимо обращаться к базе данных для анализа почти каждого пользовательского запроса, поэтому требуется большое количество подключений, но каждое подключение вернется в пул через короткое время, поэтому мне нужно увеличить количество активные соединения в пуле (maxActive ›= 50), иначе программа выйдет из строя через очень короткое время и без пула соединений она не сможет работать даже в течение 5 минут! - person Ehsan Khodarahmi; 12.04.2011