| Директива Mutex
Description: | Configures mutex mechanism and lock file directory for all
or specified mutexes |
Syntax: | Mutex mechanism [default|mutex-name] ... [OmitPID] |
Default: | Mutex default |
Context: | server config |
Status: | Core |
Module: | core |
Compatibility: | Available in Apache HTTP Server 2.3.4 and later |
Описание: Настраивает механизм мьютексов и блокирует каталог файлов для всех или указанных мьютексов
Директива Mutex устанавливает механизм и, возможно, местоположение файла блокировки, которые httpd и модули используют для сериализации доступа к ресурсам. Укажите default в качестве второго аргумента изменение настроек для всех мьютексов; укажите имя мьютекса (см. таблицу ниже) в качестве второго аргумента, чтобы переопределить значения по умолчанию только для этого мьютекса.
Директива Mutex обычно используется в следующих исключительных ситуациях:
- изменить механизм мьютекса, когда механизм по умолчанию, выбранный APR , имеет функциональную проблему или проблему с производительностью
- изменить каталог, используемый файловыми мьютексами, когда каталог по умолчанию не поддерживает блокировку
Поддерживаемые модули
Эта директива настраивает только те мьютексы, которые были зарегистрированы на главном сервере с помощью ap_mutex_register() API. Все модули, связанные с httpd, поддерживают эту Mutex
директиву, но сторонние модули могут не поддерживать. Обратитесь к документации стороннего модуля, в которой должны быть указаны имена мьютексов, которые можно настроить, если эта директива поддерживается.
Доступны следующие механизмы мьютекса:
-
default | yes
Это выбирает реализацию блокировки по умолчанию, как определено
APR . Реализация блокировки по умолчанию может быть отображена при запуске httpd с
-V параметром.
-
none | no
Это эффективно отключает мьютекс и разрешено для мьютекса только в том случае, если модуль указывает, что это допустимый выбор. Обратитесь к документации модуля для получения дополнительной информации.
-
posixsem
Это вариант мьютекса, основанный на семафоре Posix.
Предупреждение
Владение семафором не восстанавливается, если поток в процессе, содержащем мьютекс, дает сбой сегментации, что приводит к зависанию веб-сервера.
-
sysvsem
Это вариант мьютекса, основанный на семафоре SystemV IPC.
Предупреждение
Возможна «утечка» семафоров SysV, если процессы завершаются сбоем до того, как семафор будет удален.
Безопасность
API-интерфейс семафора допускает атаку типа «отказ в обслуживании» любыми CGI, работающими под тем же uid, что и веб-сервер ( т. е . всеми CGI, если только вы не используете что-то вроде suexec
или cgiwrapper ).
-
sem
Это выбирает «лучшую» доступную реализацию семафора, выбирая между семафорами Posix и SystemV IPC в указанном порядке.
-
pthread
Это вариант мьютекса, основанный на мьютексе потоков Posix между процессами.
Предупреждение
В большинстве систем, если дочерний процесс аварийно завершится, удерживая мьютекс, использующий эту реализацию, сервер заблокируется и перестанет отвечать на запросы. В этом случае для восстановления серверу потребуется ручной перезапуск.
Solaris и Linux являются заметными исключениями, поскольку они предоставляют механизм, который обычно позволяет восстановить мьютекс после аварийного завершения дочернего процесса, удерживающего мьютекс.
Если ваша система совместима с POSIX или если она реализует эту
pthread_mutexattr_setrobust_np() функцию, вы можете pthread безопасно использовать эту опцию.
-
fcntl:/path/to/mutex
Это вариант мьютекса, в котором
fcntl() в качестве мьютекса используются физический (замковый) файл и функция.
Предупреждение
Когда несколько мьютексов, основанных на этом механизме, используются в многопоточных средах с несколькими процессами, могут сообщаться об ошибках взаимоблокировки (EDEADLK) для допустимых операций с мьютексами, если он не поддерживает потоки fcntl()
, например в Solaris.
-
flock:/path/to/mutex
Это похоже на fcntl:/path/to/mutex метод, за исключением того, что flock() функция используется для блокировки файлов.
-
file:/path/to/mutex
Это выбирает «лучшую» доступную реализацию блокировки файлов, выбирая между fcntl и flock в указанном порядке.
Большинство механизмов доступны только на избранных платформах, где базовая платформа и APR их поддерживают. Механизмы, доступные не на всех платформах, это posixsem ,
sysvsem , sem , pthread , fcntl ,
flock и file .
В файловых механизмах fcntl и flock путь, если он указан, представляет собой каталог, в котором будет создан файл блокировки. Каталог по умолчанию — это каталог файлов времени выполнения httpd относительно
ServerRoot . Всегда используйте файловую систему локального диска /path/to/mutex и никогда не используйте каталог, находящийся в файловой системе NFS или AFS. Базовым именем файла будет тип мьютекса, необязательная строка экземпляра, предоставляемая модулем, и, если не
OmitPID указано ключевое слово, будет добавлен идентификатор процесса родительского процесса httpd, чтобы сделать имя файла уникальным, избегая конфликтов при использовании нескольких httpd. экземпляры совместно используют каталог файла блокировки. Например, если имя мьютекса — mpm-accept , а каталог файла блокировки — /var/httpd/locks , имя файла блокировки для экземпляра httpd с идентификатором родительского процесса 12345 будет
/var/httpd/locks/mpm-accept.12345 .
Безопасность
Лучше избегать размещения файлов мьютекса в доступном для записи каталоге, например, /var/tmp потому что кто-то может создать атаку типа «отказ в обслуживании» и помешать запуску сервера, создав файл блокировки с тем же именем, что и тот, который сервер попытается создать.
В следующей таблице указаны имена мьютексов, используемых httpd и связанными модулями.
mpm-accept |
prefork и worker МРМ |
входящие соединения, чтобы избежать проблемы громоподобного стада; для получения дополнительной информации обратитесь к документации по настройке производительности. |
authdigest-client |
mod_auth_digest |
список клиентов в разделяемой памяти |
authdigest-opaque |
mod_auth_digest |
счетчик в разделяемой памяти |
ldap-cache |
mod_ldap |
Кэш результатов LDAP |
rewrite-map |
mod_rewrite |
связь с внешними картографическими программами, чтобы избежать смешанного ввода-вывода из нескольких запросов |
ssl-cache |
mod_ssl |
Кэш сеанса SSL |
ssl-stapling |
mod_ssl |
Кэш ответов сшивания OCSP |
watchdog-callback |
mod_watchdog |
функция обратного вызова определенного клиентского модуля |
Ключевое OmitPID слово подавляет добавление идентификатора родительского процесса httpd из имени файла блокировки.
В следующем примере механизм мьютекса для мьютекса принятия MPM будет изменен с скомпилированного по умолчанию на fcntl , а связанный файл блокировки будет создан в каталоге
/var/httpd/locks . Механизм мьютексов для всех остальных мьютексов будет изменен с скомпилированного по умолчанию на sysvsem .
Mutex sysvsem default
Mutex fcntl:/var/httpd/locks mpm-accept
|
|