Этот сайт посвящается администрированию баз данных OpenEdge Progress.
Не корысти ради, а познания для!

С уважением,
Валерий Башкатов
Сайт разработан при участии компании Progress Technologies, официального дистрибьютора Progress Software Corp. на территории стран СНГ и Латвии.

RSS RSS подписка на обновления сайта

Поиск по сайту

Лучшие материалы

Orphus System
На сайте функционирует система коррекции ошибок. Обнаружив неточность в тексте, выделите её и нажмите Ctrl+Enter



Результаты опроса: Нужны ли книги по Progress OpenEdge на русском языке? (опрос проводился с мая 2009 по ноябрь 2010)

Да, нужны. Потому что будет легче понять материал - 268
Нет, не нужны. Достаточно материалов на английском языке - 10
Не знаю, мне всё равно - 6

А знаете ли вы что..



Зачем нужны семафоры в Progress OpenEdge?



Семафоры обеспечивают доступ к общим объектам данных для множества различных процессов, они предоставляют процессу "лицензию" на блокировку ресурсов, таких как записи, разделяемую память, замки (latches), и т.д. Progress разделяет семафоры на две группы: для входа в систему и для пользовательских процессов. Для входа в систему используется так называемый Логин - семафор, через который каждый процесс должен подключатся к базе данных, и который используется только с этой целью. Пользовательские семафоры используется пользовательскими процессами, уже подключенными к базе данных, чтобы иметь возможность блокировать запись или другой ресурс. Оба типа этих семафоров размещены в одном и том же пуле (pool), который мы называем "semset". Число семафоров в пределах этого набора определено параметром запуска –n для каждой базы данных. 

Как и почему необходимо использование Multiple Semaphore Sets (-semsets)? 

С самого начала, в Progress имелся только один semset, но в этом случае, был один существенный недостаток – в любой момент времени только один процесс мог его использовать. Причем не зависимо от того, регистрируется ли процесс в базе данных, или выполняет обычную операцию обработки данных. Поэтому, при большом количестве процессов образовывалась очередь за доступом к этому пулу, а это приводило к возникновению узкого места в работе базы данных. 

Следующая проблема заключалась в том, что Progress всегда успешно запускал процесс сервера, даже если ядро ОС не было способно предоставить достаточное количество семафоров для каждого процесса, которые были определены параметром –n. В этом случае, база использует столько семафоров, сколько может предложить ядро ОС, после чего они циклически распределяются между имеющимися процессами, не зависимо от того, используют они их в качестве логин - семафора, или в качестве пользовательских семафоров. В этой точке, мы получали как бы выполнение “double contention” и симптомы нехватки семафоров, которые выражались в виде сообщения в логе базы данных: "Warning: only x available wait semaphores". 

До сих пор, можно было решить только последнюю проблему - настройкой ядра ОС, увеличив количество доступных семафоров. Но чтобы выполнить настройку Progress для эффективного использования семафоров, не существовало ни какого способа, кроме как использование параметра –spin, который здесь не будет описываться. 

Начиная с 8.3A, было осуществлено использование множества наборов семафоров на UNIX платформах, поскольку на NT это всегда было значением по умолчанию. В новой реализации логин-семафор и пользовательские семафоры разделены по различным наборам. Логин - семафоры постоянно находятся в первом наборе, в то время как все другие наборы будут содержать только пользовательские семафоры. Поскольку конкуренция за семафоры связана с производительностью в системах с большим количеством пользователей, то теперь мы можем предоставить большему количеству процессов одновременный доступ к различным ресурсам, позволив им обращаться к более чем одному пулу семафоров. 

Как можно определить необходимое значение параметра –semsets? 

Для каждых 20 – 50 пользователей рекомендуется, чтобы имелся 1 набор семафоров. Например: если у базы данных есть -n равно 2500, то -semsets устанавливаем равным 50. 

Как определить наличие конкуренции за семафоры на рабочей базе данных Progress? 

Хорошим инструментом, для определения наличия конкуренции, может стать утилита sar с параметром -u. Если %sys становится выше чем 25 %, то вероятно, что у Вас возникает конкуренция за семафоры, при этом будет отмечаться деградация производительности, связанная с добавлением большего количества пользователей. Так же, Вы можете воспользоваться одним из экранов R&D утилиты promon. Для этого необходимо запустить promon командой promon <dbname>, и выбрать следующий экран: R&D -> Activity Displays -> Other. 


04/01/09 Activity:
10:12:45 04/01/09 10:07 to 04/01/09 10:12 (5 min 0 sec) 
    
  Total 
Per Min 
Per Sec 
Per Tx 
Commit  1333  267 4,44  1
Undo  0  0  0  0
Wait on semaphore  67  13  0,22 0,05
Flush master block  0  0  0  0

Если пользователи для доступа к ресурсу ожидают семафор, то это покажет поле “Wait on semaphore”. Оптимальное значение этого поля может сильно отличаться на разных системах.

Для того, чтобы установить необходимое количество наборов семафоров, воспользуйтесь следующим синтаксисом:
proserve <dbname> -semsets 2 -n 100 
Где,

  2 - значение semsets,
  -n - число пользователей.

-n является дополнительным, и может быть использован в составе .pf - файла. Если значение -n не будет указано в командной строке или в .pf – файле, тогда ему будет присвоено значение по умолчанию, которое равно 20. Если же не определен –semsets, то для него так же будет определено стандартное значение. 

В заключении хотел бы отметить, что только с лицензией Enterprise возможно использование Multiple Semaphore Sets (-semsets). 

(Башкатов В.Г. 2009 г.) 





Главная |  Статьи |  Книги |  Гостевая |  Ссылки |  От автора |  Download ProKb


������ ᠩ� pr Online ProKB Blogger Welcome to Russian Progress Users Group at Facebook Welcome to Russian Progress Users Group at LinkedIn
© 2009 - 2011 Все права на материалы, находящиеся на сайте www.openedge.ru, охраняются в соответствии с законодательством РФ, в том числе, об авторском праве и смежных правах.
При любом использовании материалов сайта ссылка на источник обязательна.