Мы поддерживаем сервер базы данных, который обслуживает большое количество клиентов. Каждый клиент обычно запускает несколько клиентских приложений. Общее количество подключений к серверу базы данных (Oracle 9i) достигает 800 подключений при пиковой нагрузке. Серверу Windows 2003 начинает не хватать памяти. Сейчас мы планируем перейти на 64-битную Windows, чтобы увеличить объем памяти. Как разработчик я предлагаю перейти на многоуровневую архитектуру с пулом соединений, что, на мой взгляд, является естественным решением этой проблемы. Однако, чтобы поддержать мою идею, мне нужна информация о:
Я уверен, что ответ на этот вопрос должен зависеть от целого ряда факторов, таких как точные характеристики используемого оборудования. Я жду приблизительной оценки или некоторого опыта из реального мира.
Для обработки соединения с базой данных требуется отдельный процесс Oracle, для которого может потребоваться до 2 МБ памяти. Обычно установка Oracle ограничивает количество одновременных подключений в зависимости от доступной памяти и конфигурации ЦП.
Например, предположим, что у вас есть 50 учетных записей клиентов в базе данных с максимум 100 одновременными подключениями на учетную запись. Если каждая учетная запись в среднем использует только 25% = 25 подключений, общее среднее количество будет 1250 подключений. Это означает 2500 МБ только для хранения данных, связанных с подключением. Также требуется процессорное время для переключения контекста.
Установив ограничения на количество одновременных подключений, вы можете гарантировать, что ваши транзакции пройдут, и что некоторые очень активные учетные записи клиентов не начнут блокировать ресурсы вашего сервера базы данных. Количество подключений ограничено параметром сеансов и вашей лицензией. Параметр sessions контролирует общее количество подключений, включая фоновые процессы Oracle.
Добавление дополнительной оперативной памяти к серверу с использованием 64-разрядной платформы Windows - хорошая идея, поскольку вам не нужно много тратить, даже добавляя 16 ГБ памяти.
Для получения подробной информации о том, как конфигурации работают в реалистичных сценариях рабочей нагрузки, прочтите Стандартный тест Oracle E-Business Suite. Обычно у них большое количество подключений.
Oracle в Windows открывает пользовательские потоки, а не процессы, afaik. (Это нехорошо, когда пользовательское соединение обрывается, так как он забирает их всех.)
Это означает, что вы ограничены памятью; несколько МБ накладных расходов на сеанс для потока и PGA на пользователя + контекст и SGA, которые зависят от того, что вы делаете. Для легкой работы (== пользователи выполняют одни и те же простые запросы снова и снова) вам нужно только подсчитывать сеансы.