Семафоры
Семафоры - это механизм, который принято использовать для контроля доступа нескольких процессов к одному ресурсу. Есть несколько реализаций программного интерфейса (API), связанного с семафорами:
- вариант System V IPC (inter-process communication);
- BSD;
- POSIX 1003.1b.
Семафор по сути - это переменная, в зависимости от значения которой доступ к тому или иному ресурсу разрешается или блокируется до его освобождения. Семафоры широко используются в Oracle. Чтобы настроить подсистему семафоров в Solaris (обеспечить достаточное количество семафоров в ядре), может потребоваться внести изменения в файл конфигурации ядра /etc/system. Для уточнения того, какие настройки требуются именно вашему программному обеспечению под Solaris, обратитесь к руководству по этому ПО.
Для Oracle8i в Oracle8i Installation Guide Release 3 рекомендуются следующие начальные значения параметров:
- set semsys:seminfo_semmni=100
- set semsys:seminfo_semmsl=<10 + самое большое значение PROCESSES среди ваших БД>
- set semsys:seminfo_semmns=<столько, сколько объяснено ниже>
- set semsys:seminfo_semopm=100
- set semsys:seminfo_semvmx=32767
Значение seminfo_semmns рекомендуется установить равным сумме параметров PROCESSES всех баз данных сервера, причем самый большой из них должен быть просуммирован с коэффициентом 2, плюс еще 10 на каждую базу данных.
Узнать текущие значения параметров семафоров (Solaris) можно с помощью команды:
sysdef | tail -25
Текущие наборы семафоров в системе (Solaris) покажет команда:
ipcs -sb
Иногда случается, что при неверном завершении процесса семафоры остаются блокированными. Или бывает, что повторный запуск интенсивно использующего семафоры процесса сорвется из-за нехватки семафоров. В этом случае необходимо удалить соответствующие наборы семафоров командой
ipcrm -s semsetID
semsetID здесь означает идентификатор набора семафоров.