Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / О настройке Shared Server / 12 сообщений из 12, страница 1 из 1
29.11.2016, 15:59
    #39357015
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
Добрый день, Ув. форумчане!

Нужен совет по настройке диспетчеров в Shared Server.

Суть проблемы: есть 2 приложения, которые соединяются c БД Oracle 11G посредством shared соединений. Для этого настроен отдельный листенер и диспетчеры

Настройки диспетчеров: dispatchers=(PROTOCOL=tcp)(DISPATCHERS=2)(LISTENER=RM_LSNR)

, а также:

shared_servers=10
max_shared_servers=15

Проблема в том, что при блокировках или большой нагрузке на 1-ое приложение сессиями 1-ого приложения занимаются все 15 общих серверов и запросы сессий 2-ого приложения тоже стоят в очереди. И наоборот. Можно ли как-то указать, что 1-ый диспетчер имеет право работать с 3-мя общими серверами, а 2-ой - с 7 серверами. Ну или какой-то другой вариант для деления ресурсов сервера между 2-мя приложениями. Оба приложения работают на одной БД, но одно из них более критично, чем другое.

Спасибо.
...
Рейтинг: 0 / 0
29.11.2016, 16:04
    #39357026
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
Раскидайте по сервисам
...
Рейтинг: 0 / 0
29.11.2016, 16:08
    #39357035
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
Я тоже об этом подумал! Но разве это решит проблему? Ведь при нагрузке на одно приложение, оно (приложение) займет все сводные сервера. И для сессий 2-го приложения свободных серверов не окажется...
...
Рейтинг: 0 / 0
29.11.2016, 16:11
    #39357044
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
...займет все свободные сервера....
...
Рейтинг: 0 / 0
29.11.2016, 17:19
    #39357136
О настройке Shared Server
Scorpion_TSN,

диспечера не работают с серверами, а просто кладут запросы в virtual circuit откуда свободные процессы выбирают себе занятие.
Если не хочеш добавить еще серверов, то настрой ТНСы у клиентов без указания типа сервера чтобы при нехватке свободных серверов клиенты коннектились в dedicated
...
Рейтинг: 0 / 0
30.11.2016, 11:28
    #39357505
д0k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
Мне кажется, ИМХО, что Shared Server-ы - припарка для 32 разрядных
платформ.
С появлением 64 разрядных систем геморой с ограничениями, накладываемыми
Shared Server -ой конфигурацией стал дороже , чем память в 64 разрядном сервере.
...
Рейтинг: 0 / 0
30.11.2016, 11:38
    #39357516
д0k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
Где то читал , что шаред серверы в конце 90 годов ( в районе 8 версии)
были попыткой рефакторить и переписать
ядро базы для лучшей латентности ОЛТП, но потом на нее забили ,
и работа не была доведена до конца. в результате получилось ни туды ни сюды.
...
Рейтинг: 0 / 0
30.11.2016, 12:44
    #39357580
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
Scorpion_TSN,

DBRM(active_sess_pool_p1) + dispatchers/service
Развертываем
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
SQL> alter system set dispatchers='(SER=srv1)(IND=1)' dispatchers='(SER=srv2)(IND=2)' shared_servers=10 comment='dbrm_test_shared_srv_limit';

System altered.

SQL> exec dbms_resource_manager.clear_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.delete_plan( 'DBRM_TEST_SHARED_SRV_LIMIT')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.delete_consumer_group( 'GROUP_SRV1')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.delete_consumer_group( 'GROUP_SRV2')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_consumer_group( 'GROUP_SRV1')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.create_consumer_group( 'GROUP_SRV2')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan( 'DBRM_TEST_SHARED_SRV_LIMIT')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan_directive( -
>   'DBRM_TEST_SHARED_SRV_LIMIT', -
>   'GROUP_SRV1', -
>   active_sess_pool_p1=> 2)

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan_directive( -
>   'DBRM_TEST_SHARED_SRV_LIMIT', -
>   'GROUP_SRV2', -
>   active_sess_pool_p1=> 3)

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.create_plan_directive( -
>   'DBRM_TEST_SHARED_SRV_LIMIT', -
>   'OTHER_GROUPS')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.set_consumer_group_mapping( -
>   dbms_resource_manager.service_name, -
>   'srv1', -
>   'GROUP_SRV1')

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager.set_consumer_group_mapping( -
>   dbms_resource_manager.service_name, -
>   'srv2', -
>   'GROUP_SRV2')

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.validate_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> exec dbms_resource_manager.submit_pending_area

PL/SQL procedure successfully completed.

SQL> 
SQL> drop user tc cascade;

User dropped.

SQL> 
SQL> grant connect to tc identified by tc;

Grant succeeded.

SQL> grant execute on dbms_lock to tc;

Grant succeeded.

SQL> 
SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group( 'TC', 'GROUP_SRV1', false)

PL/SQL procedure successfully completed.

SQL> exec dbms_resource_manager_privs.grant_switch_consumer_group( 'TC', 'GROUP_SRV2', false)

PL/SQL procedure successfully completed.

SQL> 
SQL> alter system set resource_manager_plan=dbrm_test_shared_srv_limit;

System altered.


Создадим для теста пару скриптов:
один
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#!/usr/bin/env bash

SRV=$1
SESS=$2
SLEEP=$3

for i in $(seq 1 $SESS) ;
do
  SQLPATH="" sqlplus tc/tc@\'localhost/$SRV\' <<_EOF &
exec dbms_lock.sleep( $SLEEP)

_EOF
done


Два:
Код: plsql
1.
2.
bash dbrm_test.sh srv1 15 5 &
bash dbrm_test.sh srv2 15 5 &


Запускаем, смотрим.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
SQL> select service_name, status, state, event from v$session where username='TC' order by service_name, status;

SERVICE_NAME                   STATUS   STATE               EVENT
------------------------------ -------- ------------------- ------------------------------
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client

30 rows selected.

SQL> select service_name, status, state, event from v$session where username='TC' order by service_name, status;

SERVICE_NAME                   STATUS   STATE               EVENT
------------------------------ -------- ------------------- ------------------------------
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           ACTIVE   WAITING             PL/SQL lock timer
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv1                           INACTIVE WAITING             SQL*Net message from client
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           ACTIVE   WAITING             PL/SQL lock timer
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client
srv2                           INACTIVE WAITING             SQL*Net message from client



Отдельно смотрим v$shared_server.
...
Рейтинг: 0 / 0
30.11.2016, 16:25
    #39357785
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
SeaGate, Спасибо огромное!! Судя по всему - это то, что нужно!
...
Рейтинг: 0 / 0
01.12.2016, 07:36
    #39358144
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
д0kМне кажется, ИМХО, что Shared Server-ы - припарка для 32 разрядных
платформ.
С появлением 64 разрядных систем геморой с ограничениями, накладываемыми
Shared Server -ой конфигурацией стал дороже , чем память в 64 разрядном сервере.Вопрос, в основном, не в памяти
А в количестве процессов в OS (когда у планировшика начинало крышу сносить)
Ну и накладные расходы на создание каждого процесса в Oracle
Это было достаточно актуально для двузвенки

Для WEB-приложений, конечно, лучше использовать пул.
...
Рейтинг: 0 / 0
01.12.2016, 07:38
    #39358145
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
SeaGate...Красиво

Ну и мапить можно еще и по всяким APPLICATION_INFO, если приложение это устанавливает -- тогда можно ограничивать только заведомо ресурсоемкие операции
...
Рейтинг: 0 / 0
01.12.2016, 14:11
    #39358482
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О настройке Shared Server
д0kГде то читал , что шаред серверы в конце 90 годов ( в районе 8 версии)
были попыткой рефакторить и переписать
ядро базы для лучшей латентности ОЛТП, но потом на нее забили ,
и работа не была доведена до конца. в результате получилось ни туды ни сюды.

то что у ТС 15 сессий - это совершенно ни о чем, однако есть упоротые вендоры, которые про пул соединений ничего слыхом не слышали, в итоге получается, что помимо того, что на одного пользователя приходится одна сессия в базе, оно еще постоянно открывает/закрывает соединения, а где-то при тысячах 10 таких "пользователей" базе становится ой как плохо.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / О настройке Shared Server / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]