|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Доброго всем дня! Не подумайте плохого, тобиж не соизволив погуглить пресловутую ошибку ORA-12519 опять кто-то задаёт вопрос, а решение-то просто как лопата: sessions=(1.1*PROCESSES)+5, transactions=(1.1*SESSIONS), ребут инстанта и вперёд! Нет всё не так, ресурсов у меня хватает вполне: processes=4000 (max_utilization=336), sessions=7040 (max_utilization=6049), transactions=7744 (max_utilization=174). Данная ошибка начинает проявляться когда current_utilization sessions>6000, до 5900 всё работает как часы. Oracle 11.2.0.4 EE x64, OS Windows 2008R2 EE x64. Во что упирается листенер, подскажите плз! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 16:45 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
>6000 - это, как бы, весьма близко к 7040. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 17:21 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Fedotov Ruslan sessions=(1.1*PROCESSES)+5 Лучше чтобы бизнес-процесс не смог запуститься из-за PROCESSES, чем ляснулся посередине из-за SESSIONS. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 07:12 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Elic, но сколько там этих автономок, по-любому не больше 100, при таких цифрах так сказать ни о чём. Дело в том что до недавнего времени стояло sessions=6000 и было всё предельно ясно 59хх ещё работает, доходит до 6000 и "болт". Сделал 7000 (oracle почему-то исправил на 7040), но к удивлению ничего не изменилось (на примере: sessions max_utilization=6049) на полтинник прибавилось и тоже "болт", думаешь надо поставить processes*2 = 8000 и всё заработает? Чёт я сомневаюсь что причина в этом. Processes же нет смысла увеличивать больше 4000 раз max_utilization всего 336. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 09:27 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Fedotov Ruslan ... нет смысла увеличивать ... А вы попробуйте и уж тогда точно поймете был ли смысл увеличивать :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 11:36 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Ну, к сожалению, чтобы поэкспериментировать с параметрами нужна перезагрузка инстанта, сейчас не реально, на выходных попробую, увеличу processes до 6000, sessions до 8000, сомневаюсь что это поможет. Заодно хотел спросить: 1. Что делает параметр DIRECT_HANDOFF_TTC _LISTENER=ON|OFF в listener.ora (у меня его нет, но с похожей проблемой народ пишет) чёткого описания не нашёл. 2. А какое, вообще, ограничение у ОС Win2008R2EEx64 на количество нитей одного процесса (грешным делом я подумал oracle.exe ведь один процесс). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 17:05 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Зависит от памяти, но, в тестовых целях, я создавал Java-процессы с 15-20 тысячами потоков на семёрке (клиентский эквивалент 2008R2). Вот с тысячами сокетов - могут быть варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 17:52 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Надеюсь, что не в виндовые ограничения упёрся. С памятью тоже вроде всё ОК, на хосте 512Gb, SGA 400Gb, PGA 64, Shared режим. Вообщем, поставил processes=6000, sessions=8000 для эксперимента, ребутнул, буду наблюдать когда юзера налезут. Ну, а про DIRECT_HANDOFF_TTC _LISTENER кто-нить знает? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2021, 23:10 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Fedotov Ruslan ... Shared режим... О, а вот это новая вводная в Вашей истории. И это много чего меняет, ведь мы именно обсуждаем проблему коннекта при достижении некоего лимита. Т.е. способ коннекта, SHARED/DEDICATED - как раз предмет расследования. Полагаю, у Вас были достаточные основания для использования MTS, тем более на Windows. Вы же знаете, MTS не самая, скажем так, популярная технология, хотя безусловно имеет право на использование. Просто опыта с ней на порядки меньше, плюс часто в интернете, даже тот же Т.Кайт говорит - используйте, только если ну очень надо. И 6000 сессий - не такое уж большое значение, если бы 60 000 сессий, или 6000 коннектов в секунду - тогда да, тут уж надо думать, что с ними делать. В общем, MTS привносит свои изменения в привычный "уклад" работы Oracle, и как устанавливаются соединения с базой, и как используется память. Т.к. в случае MTS, UGA выделяется из Large Pool (вместо PGA), а если там уже не хватает - то из Shared Pool - поэтому убедитесь, что Large Pool и Shared Pool достаточно большие для Ваших нескольких тысяч сессий, осмотрите все mts_* параметры - как те что выставлены вручную в INIT.ORA, так и остальные, рассчитанные на их основе значения: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Посмотреть текущие настройки диспетчеров MTS и прочие сопутствующие настройки можно во view (желательно под максимальной нагрузкой, чтобы видеть значения установленных сессий и их распределение по диспетчерам): Код: plsql 1. 2. 3.
Посмотреть количество установленных соединений через MTS диспетчеры можно ещё через вывод lsnrctl services. В смысле - кроме классического поля V$SESSION.SERVER. В настройках диспетчеров есть свои лимиты SESSIONS и CONNECTIONS. Если они не указаны вручную - то какие именно default-значения они принимают, тем более под Windows - надо смотреть, нет под рукой площадки проверить. И кстати, для тестов, чтоб не менять настройки базы и не перезагружать её - можно на стороне клиента, если у Вас (вдруг) все коннекты идут из одного места (от одного сервера приложений) - можно в одном месте на время тестов изменить tnsnames.ora файл и добавить SERVER=DEDICATED, таким образом заставить все сессии соединяться в обход MTS, в "обычном" (DEDICATED а не SHARED) режиме. Таким образом можно на день потестировать, проблема в MTS или нет. Или, чтобы не править конкретный TNS-Alias, можно централизованно добавить в sqlnet.ora строчку: Код: plsql 1.
Тогда для всех записей (алиасов) в tnsnames.ora, автоматически будет подставляться настройка SERVER=DEDICATED, тут как Вам удобней. Но еще раз, это удобно и быстро и просто потестировать, если у Вас классическое 3-Tier приложение, и все коннекты в базу идут от одного сервера (или нескольких), и поменять на время тестов tnsnames.ora / sqlnet.ora быстро и не накладно. Если все Ваши 6000+ коннектов идут с 6000+ хостов (компов), и tnsnames.ora / sqlnet.ora у всех свой, локальный, а не общий на shared-диске - то это нереально конечно. Хотя, опять же, всякие варианты с централизованным deployment файлов tnsnames.ora / sqlnet.ora тоже могут быть в организации. Тут уж Вам видней. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2021, 13:32 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
shane54, очень много интересных мыслей, спасибо на наводку! С памятью, я думаю всё ok; SGA=400Gb из них Shared_pool=80G(free 30G), Large_pool=32G(free 17G), остальное Buffer_cache; PGA=64Gb(free 52G). А вот с перечисленными параметрами есть вопросы: shared_servers=50 max_shared_servers=1000 dispatchers=(protocol=TCP)(disp=60)(con=100) max_dispatchers=200 circuits=(не задано) shared_server_sessions=(не задано) local_listener=(не задано) Ну v$shared_server из 50 под нагрузкой в среднем 20 EXEC, 10 WAIT(COMMON) и 20 WAIT(RECEIVE), так что здесь всё нормально. У v$dispatcher все 60 status - WAIT, accept - YES, тоже всё хорошо. Но вот меня смущает con=100, не упираюсь ли я в (60 диспетчеров * на 100 коннектов = 6000 сессий) в shared режиме, естественно dedicated сессии видимо вылезут выше 6000 и будут ограничены только параметром sessions. Но это пока лишь моя догадка, буду ждать пика, когда юзера конкретно подналезут, такое случается не каждый день. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2021, 14:57 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Большой респект shane54. Проблема решена! Никакие увеличения sessions до 8000 и processes до 6000 не помогли, так и оставил sessions=7000, processes вообще опустил до 1000. Как и предполагал, проблема в ограничении: dispatchers=(protocol=TCP)(disp=60)(con=100), т.е 60*100=6000 сессий по Shared режиму. Поставил dispatchers='(protocol=TCP)(disp=50)(con=140)' 50*140=7000 и пулемёт застрочил с новой силой. Ещё раз спасибо всем! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 17:19 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
Fedotov Ruslan оставил sessions=7000, processes вообще опустил до 1000. Ты уверен что после того как количество processes было выставлено равным 1000 количество сессий осталось равным 7000? Есть такой вот документ - How to calculate the proper value from processes, sessions, and transactions (Doc ID 1682295.1) , при количестве процессов равном 1000 количество сессий должно быть 11g-> ((1.5 * PROCESSES) + 22)=1522 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 23:56 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
flexgen 11g-> ((1.5 * PROCESSES) + 22)=1522 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2021, 06:46 |
|
ORA-12519: TNS:не найден подходящий механизм службы
|
|||
---|---|---|---|
#18+
11g-> ((1.5 * PROCESSES) + 22)=1522 Да, есть такое дело, это рекомендуемый формат, формула работает если не задавать параметр SESSIONS, можно задать тупо PROCESSES и не париться, Oracle сам выставит количество сессий. Если прописать руками processes=1000, sessions=7000 всё работает как задано (не разглагольствую, проверено). Я опустил processes до 1000 из соображений, что по этому параметру max_utilization у меня 330. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2021, 09:26 |
|
|
start [/forum/topic.php?fid=52&fpage=12&tid=1879898]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 239ms |
total: | 420ms |
0 / 0 |