The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]



"Проблема в работе Samba 4 (переодически виснет)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Samba, вопросы интеграции Unix и Windows (Контроллер домена (PDC) и samba)
Изначальное сообщение [ Отслеживать ]

"Проблема в работе Samba 4 (переодически виснет)"  +/
Сообщение от invisibility (ok) on 07-Май-18, 12:23 
Доброго дня, форумчане.
Прошу помощи с Samba 4.5.0. Установил самбу по инструции в Centos7

в результате получил контроллер домена, который работает. После ввода компьютеров в домен, обнаружилась проблема, а именно: через разные неравные промежутки времени "виснет" доступ к общим ресурсам на сервере. Нашел в Сети, что нужно увеличить количество открываемых файлов иначе самба виснет
     fs.file-max = 500000

увеличил, проблема осталась.
Так же задал время жизни соединения:

     net.ipv4.tcp_keepalive_time = 300
     net.ipv4.tcp_keepalive_intvl = 30
     net.ipv4.tcp_keepalive_probes = 6


Указанные манипуляции делал в sysctl.conf

По рекомендации начал проверять службы DNS и Winbind и тут вылезла удивительная вещь: оказывается во время "зависания" самбы не работает именно winbind или, вернее сказать, не отвечает на запросы (wbinfo -p не может определить домен)

в логах самбы ничего вразумительного нет (поднимал лог левел до 9-ки ничего толком по данной ситуации не увидел), лог winbind'а практически пустой.

ниже smb.conf

# Global parameters
[global]
netbios name = DC-PFARM
realm = PFARM.LAN
workgroup = PFARM
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc
server role = active directory domain controller
bind interfaces only = yes
interfaces = 192.168.7.251/24
security = user

#отключение технологии sasl wrapping (защита соединения с ldap)
client ldap sasl wrapping = plain
#отключения верификации клиентов
client signing = off
#отключения защиты DCE/RPC
require strong key = false
winbind sealed pipes = false

idmap config * : backend = tdb
idmap config * : range = 3000-7999
winbind nss info = template
winbind use default domain = true
log level = 3
log file = /var/log/samba/%S.log
max log size = 512000
password server = DC-PFARM
logon drive = h:
logon path = \\dc-pfarm\home\%U

#отключаем службу принтеров
load printers = no
printing = bsd
printcap name = /dev/null

#For ACL attribute
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes

#для обращений по обозреванию сети
local master = yes
preferred master = yes
os level = 255
domain master = yes
wins support = yes


[netlogon]
path = /var/samba/netlogon
read only = No
write ok = Yes
browseable = no
guest ok = no
public = yes

Прошу помочь решить проблему, указать куда ковырять и т.д.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема в работе Samba 4 (переодически виснет)"  +/
Сообщение от babaj75 on 07-Май-18, 14:59 
/etc/security/limits.conf

попробуй добавить (изменить)

*                soft    nproc          unlimited
*                hard    nproc          unlimited

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Проблема в работе Samba 4 (переодически виснет)"  +/
Сообщение от invisibility (ok) on 08-Май-18, 10:20 
> /etc/security/limits.conf
> попробуй добавить (изменить)
> *            
>     soft    nproc  
>        unlimited
> *            
>     hard    nproc  
>        unlimited

прошу рассказать причину в необходимости этих настроек. данные настройки должны выполнятся на высоконагруженных серверах (так в доке написано), у меня же всего 26 станций + сервер БД (по моему это не большая нагрузка на сервер AD).

я попробую после праздников так покрутить (дабы не положить систему совсем). о результатах сообщу

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Проблема в работе Samba 4 (переодически виснет)"  +/
Сообщение от PereresusNeVlezaetBuggy (ok) on 07-Май-18, 20:30 
> Прошу помочь решить проблему, указать куда ковырять и т.д.

Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не нужен (а зачем он нужен в домене?), то лучше бы его отключить, конечно.

Проверьте, что в /etc/resolv.conf нет лажи и что все указанные там сервера отвечают одинаково и быстро.

Лимиты увеличивать здесь точно не поможет.

UPD: Заработался. WINS вам нужен, конечно, это я уже с NetBIOS путаю. Прошу прощения.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Проблема в работе Samba 4 (переодически виснет)"  +/
Сообщение от invisibility (ok) on 08-Май-18, 10:15 
>> Прошу помочь решить проблему, указать куда ковырять и т.д.
> Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не
> нужен (а зачем он нужен в домене?), то лучше бы его
> отключить, конечно.
> Проверьте, что в /etc/resolv.conf нет лажи и что все указанные там сервера
> отвечают одинаково и быстро.
> Лимиты увеличивать здесь точно не поможет.
> UPD: Заработался. WINS вам нужен, конечно, это я уже с NetBIOS путаю.
> Прошу прощения.

содерижимое resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 127.0.0.1

т.е. данный сервак и является DNS сервером. По мне так тут проблема с winbind. он не отвечает в такие моменты. насчет лимитов у меня так же есть сомнения. Причина: в моменты когда есть проблема процессов winbindd все 3 (как и в моменты нормальной работы сервера), а вот процессов smbd аномально много

>>/usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground

у меня 2 варианта: либо это кто-то пытается "подключиться" к серваку и DDoS-ит (что у меня вызывает сомнения), из-за чего winbindd не успевает обрабатывать запросы, либо winbindd перестает обрабатывать запросы, из-за чего и плодится аномально много одновременных попыток подключения.

в любом случае (мне кажется где тута собака и порылась)

по поводу DNS - какие мне проверки выполнить что бы определить, что он нормально определяется?
по поводу winbind'а - используется в строенный в самбу, логи его практически всегда пустые.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Проблема в работе Samba 4 (переодически виснет)"  +/
Сообщение от invisibility (ok) on 11-Май-18, 14:01 
>> Прошу помочь решить проблему, указать куда ковырять и т.д.
> Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не
> нужен (а зачем он нужен в домене?), то лучше бы его
> отключить, конечно.
>
>>|[sam-dom]# wbinfo --all-domains
>>|failed to call wbcListTrusts: WBC_ERR_WINBIND_NOT_AVAILABLE

вот такой вывод в моменты наблюдения проблемы.
из этого могу предположить, что все таки винбинд глючит. тем более, что перезапуск DNS'a проблему не решает

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Проблема в работе Samba 4 (переодически виснет)"  +/
Сообщение от PereresusNeVlezaetBuggy (ok) on 15-Май-18, 06:30 
>>> Прошу помочь решить проблему, указать куда ковырять и т.д.
>> Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не
>> нужен (а зачем он нужен в домене?), то лучше бы его
>> отключить, конечно.
>>
>>>|[sam-dom]# wbinfo --all-domains
>>>|failed to call wbcListTrusts: WBC_ERR_WINBIND_NOT_AVAILABLE
> вот такой вывод в моменты наблюдения проблемы.
> из этого могу предположить, что все таки винбинд глючит. тем более, что
> перезапуск DNS'a проблему не решает

Посмотрел исходники Samba — судя по всему, эта проблема возникает при любой ошибке доступа к UNIX-сокету, по которому должен быть доступен winbind. То есть: если сокет не доступен на чтение-запись, или если при чтении-записи происходит ошибка (кроме EAGAIN).

А дальше у меня глаза на лоб вылезли:


                ret = poll(&pfd, 1, 5000);
                // <...>
                if ((ret == 1) && (pfd.revents & (POLLIN|POLLHUP|POLLERR))) {
                        /* Do the Read */
                        int result = read(fd, (char *)buffer + nread,
                              count - nread);
                        if ((result == -1) || (result == 0)) {
                                /* Read failed.  I think the only useful thing we
                                   can do here is just return -1 and fail since the
                                   transaction has failed half way through. */
                                winbind_close_sock(ctx);
                                return -1;
                        }
                        nread += result;
                }

То есть даже если read() (или write(), там похожая ситуация) вернёт -1 + errno=EAGAIN, мы считаем, что жизнь кончена. Да, они используют неблокирующийся ввод-вывод, но работают полностью синхронно — видимо, чтобы выставлять таймауты. Первая мысль была: «как этот код может вообще работать?!». Но, видимо, при небольшом объёме передаваемых или отправляемых данных у них всё помещается в буфер сокета и всё хорошо. Если они всегда передают мало-мало данных, а транзакции в целом включают одну запись и одно чтение, то это даже может работать. Хотя всё равно может какой-нибудь не очевидный лимит вылезти.

К сожалению, wbinfo не сообщает нижележащую ошибку, по которой можно было бы понять, что именно обламывается: lstat/socket/connect/read/write. Думаю, вы можете в проблемный момент попробовать с помощью nc/netcat/socat подключиться к сокету winbind (скорее всего, он где-то в /run живёт). Ну или запустить wbinfo под strace.

Есть вариант, что winbind не успевает принимать подключения (переполнен backlog, его размер равен 5), почему — сложно сказать, но есть предположение, что они таки превращают где-то неблокирующийся ввод-вывод в обычный синхронный. Можно попробовать поизучать вывод от tevent, конечно... Но лучше было бы, думаю, запустить winbind под strace -f.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor