Назад | Перейти на главную страницу

Каково типичное максимальное количество подключений к базе данных для Oracle, работающего на сервере Windows?

Мы поддерживаем сервер базы данных, который обслуживает большое количество клиентов. Каждый клиент обычно запускает несколько клиентских приложений. Общее количество подключений к серверу базы данных (Oracle 9i) достигает 800 подключений при пиковой нагрузке. Серверу Windows 2003 начинает не хватать памяти. Сейчас мы планируем перейти на 64-битную Windows, чтобы увеличить объем памяти. Как разработчик я предлагаю перейти на многоуровневую архитектуру с пулом соединений, что, на мой взгляд, является естественным решением этой проблемы. Однако, чтобы поддержать мою идею, мне нужна информация о:

  1. какое именно количество соединений разрешено для базы данных Oracle?
  2. В чем проблема, когда количество подключений слишком велико? Слишком много памяти? или слишком много сокетов открыто? или слишком много переключения контекста между потоками?
  3. Чтобы быть немного конкретным, как приложение Oracle Forms могло масштабироваться до тысячи пользователей, не сталкиваясь с этой проблемой? Может ли Oracle RAC применяться к этому делу?

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

Для обработки соединения с базой данных требуется отдельный процесс Oracle, для которого может потребоваться до 2 МБ памяти. Обычно установка Oracle ограничивает количество одновременных подключений в зависимости от доступной памяти и конфигурации ЦП.

Например, предположим, что у вас есть 50 учетных записей клиентов в базе данных с максимум 100 одновременными подключениями на учетную запись. Если каждая учетная запись в среднем использует только 25% = 25 подключений, общее среднее количество будет 1250 подключений. Это означает 2500 МБ только для хранения данных, связанных с подключением. Также требуется процессорное время для переключения контекста.

Установив ограничения на количество одновременных подключений, вы можете гарантировать, что ваши транзакции пройдут, и что некоторые очень активные учетные записи клиентов не начнут блокировать ресурсы вашего сервера базы данных. Количество подключений ограничено параметром сеансов и вашей лицензией. Параметр sessions контролирует общее количество подключений, включая фоновые процессы Oracle.

Добавление дополнительной оперативной памяти к серверу с использованием 64-разрядной платформы Windows - хорошая идея, поскольку вам не нужно много тратить, даже добавляя 16 ГБ памяти.

Для получения подробной информации о том, как конфигурации работают в реалистичных сценариях рабочей нагрузки, прочтите Стандартный тест Oracle E-Business Suite. Обычно у них большое количество подключений.

Oracle в Windows открывает пользовательские потоки, а не процессы, afaik. (Это нехорошо, когда пользовательское соединение обрывается, так как он забирает их всех.)

Это означает, что вы ограничены памятью; несколько МБ накладных расходов на сеанс для потока и PGA на пользователя + контекст и SGA, которые зависят от того, что вы делаете. Для легкой работы (== пользователи выполняют одни и те же простые запросы снова и снова) вам нужно только подсчитывать сеансы.