Ответ 1
Просмотрите book в книгах Google. Это объясняет различия между соединениями и сеансами.
Позвольте мне сначала объяснить настройку.
У нас есть сервер oracle, работающий на 2 ГБ оперативной памяти. У экземпляра Db параметр инициализации "сеансы" установлен на 160.
У нас есть приложение, развернутое на Websphere 6.1. Настройки пула подключений: Min 50 и Max 150.
Когда мы запускаем Load test на 40 пользователей (одновременно, используя jMeter), все идет хорошо. Но когда мы увеличиваем совпадающих пользователей до Beyond 60, Oracle бросает и исключает, что у него нет сессий.
Мы проверили приложение на наличие каких-либо утечек соединения, но не смогли найти.
Значит ли это, что concurrency из 40 - это то, что может сделать эта настройка? Увеличивает ли сеанс/процесс Oracle единственный способ получить более высокий concurrency?
Как точно связаны сеансы DB и Connection в пуле соединений? По моему мнению, соединения не могут превышать сеансы, и поэтому установка пула Max Connection на большее, чем сеансы, может не иметь особого значения. Это правильно?
Просмотрите book в книгах Google. Это объясняет различия между соединениями и сеансами.
Metalink дает следующий совет о параметре SESSIONS:
Рекурсивные сеансы являются неотъемлемой частью нормального функционирования RDBMS. Невозможно определить каждое обстоятельство, которое потребует таких сессий, но в целом, если пользовательская операция требует манипуляция словарем данных объектов, то рекурсивные сеансы могут создайте. Чтобы сделать простой пример, скажем, вы создаете таблицу во время входа в систему как обычный пользователь. За сцены, это должно вставлять строки в obj $, tab $и т.д., которые принадлежат Пользователь SYS. Поскольку обычный пользователь не имеют права вставлять в эти объектов, рекурсивный сеанс который регистрируется как SYS.
Решение:
Увеличьте параметр SESSIONS.
Рекомендация состоит в том, чтобы сохранить 50% значение SESSIONS для рекурсивного сессий. Так, например, если это ожидается 30 сеансов клиентов откройте, затем установите параметр SESSIONS до 60.
Таким образом, в зависимости от того, что делает веб-страница и ваш пользовательский процесс, это может частично объяснить, что вы видите.
Используются ли все ваши подключения с использованием одной и той же учетной записи? Если это так, вы можете проверить, есть ли у вас ограничение для каждого пользователя для этой учетной записи пользователя.
Кроме того, вы имеете лицензию на более чем 40 соединений? (Проверьте, установлен ли в файле параметров LICENSE_MAX_SESSION)
Сессионный пул управляется на стороне клиента. Он не знает (или не контролирует), сколько сеансов позволит база данных.
Вы должны посмотреть на сервере, чтобы определить фактическое количество подключений, которые разрешены, и установить номер пула сеансов на основе того, что разрешит сервер.
Пул соединений не должен использовать все разрешенные подключения. Это позволит подключить другие идентификаторы. Если у вас есть приложение, использующее USER_1, вы должны установить пул соединений для использования некоторого количества разрешенных подключений, но оставить достаточно соединений для... О, скажем, DBA для входа.
- Изменить -
Процессы, вероятно, запускаются до того, как ваш пул соединений будет удален.
SQL> show parameter processes
NAME TYPE VALUE
--------------------------------------------------------------------------------
processes integer 40
Это общее количество разрешенных процессов Теперь посмотрим, сколько из них уже используется - многие из них - фоновые процессы, о которых вы никогда не подумали.
SQL> select count(*) from v$process;
Мой сеанс v $содержит 30 записей, 4 из которых имеют имя пользователя (одно из которых является фоном).
Если у вас есть фоновые процессы (например, пакетные задания), они могли бы пережевывать сеансы.
Но может случиться так, что у вас просто не хватает памяти. 2GB кажется немного низким для пула соединений 50 сеансов. Предполагая, что Oracle 10g, вы RAM делится на общий (SGA) и процесс (PGA). Скажем, у вас есть 1,5 ГБ для SGA, который оставляет 500 МБ для всех сеансов. Если сеансы захватывают 10 МБ каждый, вы достигнете предела около 50 сеансов.
В действительности, 1. У вас будет какое-то другое "вещество", работающее на ящике, так что у него не будет 2 ГБ для Oracle
PS. Значит ли 2GB означает, что вы находитесь в Windows?