Вывод списка процессов Samba на контроллере домена
Для получения списка процессов сервисов Samba, запущенных на контроллере домена, с помощью утилиты samba-tool используется подкоманда processes.
| Подкоманда выполняется от имени пользователя root. |
Общие сведения
Процесс samba поддерживает несколько режимов обработки клиентских соединений (RPC, LDAP и т. д.). Режим задается при запуске процесса с помощью аргумента командной строки -M|--model.
Доступны следующие режимы:
-
standard— для каждого сервиса Samba создается отдельный процесс, а для сервисов LDAP и NETLOGON при каждом входящем клиентском соединении также запускается отдельный дочерний процесс, что ведет к большому потреблению системных ресурсов при значительном количестве соединений; -
prefork(по умолчанию) — для каждого сервиса Samba создается отдельный процесс, а для сервисов LDAP, NETLOGON и KDC также запускается фиксированное количество рабочих процессов, между которыми распределяется нагрузка по обработке входящих клиентских соединений; количество рабочих процессов задается с помощью параметраprefork childrenв конфигурационном файле /app/inno-samba/etc/smb.conf (по умолчанию —4); для каждого сервиса может быть задано свое значение в форматеprefork children: service name(например:prefork children:ldap = 8); -
single— все сервисы Samba работают в одном процессе; данный режим предназначен для тестирования и отладки.
Для просмотра запущенных на контроллере домена процессов, относящихся к Samba, может использоваться подкоманда samba-tool processes (должна выполняться от имени пользователя root).
Вывод подкоманды может использоваться для диагностирования проблем в работе сервисов Samba.
Режим prefork
В режиме prefork для поддерживающих его сервисов (KDC, LDAP, RPC) помимо основного процесса в выводе подкоманды также отображается то количество рабочих процессов, которое задано в настройках Samba.
Пример вывода при prefork children = 4 (по умолчанию):
Service: PID -------------------------------------- cldap_server 29865 dnssrv 29894 dnsupdate 29891 dreplsrv 28476 kccsrv 29887 kdc_server 29869 kdc_server(worker 3) 29893 kdc_server(worker 0) 29878 kdc_server(worker 1) 29883 kdc_server(worker 2) 29888 ldap_server 29861 ldap_server(worker 1) 29910 ldap_server(worker 2) 29913 ldap_server(worker 0) 29908 ldap_server(worker 3) 29916 nbt_server 29856 notify-daemon 29903 rpc_server 29852 rpc_server(worker 2) 29871 rpc_server(worker 0) 29862 rpc_server(worker 1) 29867 rpc_server(worker 3) 29876 samba 29848 windbind_server 29885
В общем случае основной процесс отвечает за запуск и перезапуск рабочих процессов. В случае RPC-сервера вызовы от NETLOGON распределяются по всем рабочим процессам, тогда как остальные RPC-вызовы обрабатываются первым рабочим процессом (rpc_server(worker 0)).
Если рабочий процесс завершается по какой-либо причине, он перезапускается. Если проблема сохраняется, постоянный перезапуск рабочего процесса может привести к чрезмерному потреблению ресурсов CPU. Для снижения негативного влияния такой ситуации на общую производительность при каждом перезапуске основного или рабочего процесса увеличивается период от завершения процесса до перезапуска на значение параметра prefork backoff increment (задается в разделе global конфигурационного файла smb.conf) до тех пор, пока не будет достигнуто максимальное значение, установленное параметром prefork maximum backoff. В течение этого периода клиентские соединения перераспределяются между доступными рабочими процессами (если не задано значение prefork children = 1).
Параметр prefork backoff increment может быть задан для конкретного сервиса в формате prefork backoff increment: service name (например: prefork backoff increment:ldap = 2).
Формат вызова
Для получения информации о процессах сервисов Samba используется следующий формат вызова:
samba-tool processes [options]
Подкоманда выводит имена и PID процессов сервисов Samba.