У меня есть веб-сервер Ubuntu 16.04 LTS, который монтирует файловый сервер Windows через Samba. Веб-сервер должен иметь возможность время от времени выполнять задачи, которые взаимодействуют с файлами на этом сервере. Однако недавно у нас произошел сбой в работе файлового сервера Windows, из-за которого веб-сервер начал плохо себя вести. Я надеюсь, что отключение монтирования просто приведет к немедленному сбою команд, которые пытаются взаимодействовать с этой папкой (что позволяет нам быстро поймать и обработать исключение), но вместо этого оказывается, что взаимодействия с монтированием происходят очень сильно вместо этого медленно .
Вот запись в / etc / fstab для монтирования общего ресурса:
//<Windows server hostname>/TPA /mnt/TPA cifs username=tasker,password=<redacted>,domain=<our domain>,sec=ntlm,iocharset=utf8,sec=ntlm 0 0
Под «медленно» я подразумеваю, что если я сделаю ls / mnt
, команда примет примерно 30 секунд до завершения, прежде чем я получу следующее сообщение:
user@server:/mnt$ ls
ls: cannot access 'TPA': Host is down
Эту медлительность можно увидеть и в самом веб-приложении. Если возможно, я хотел бы иметь возможность настроить веб-приложение, чтобы определять, не работает ли общий ресурс, и обрабатывать это изящно, но я не хочу, чтобы это занимало 30 секунд с каждым запросом. Есть ли способ настроить вещи так, чтобы их можно было обрабатывать более изящно?
Чтобы усложнить ситуацию, веб-приложение на самом деле находится внутри контейнера Docker, к которому добавлен том, указывающий на / mnt
, что может еще больше усугубить ситуацию, хотя я полагаю, что если я решу проблемы с хостом, то, надеюсь, контейнер также будет соответствовать.
Любой совет будет очень признателен!
EDIT: I ' Я добавлю, что на данный момент мы отключили некорректное крепление и закомментировали строку из fstab, и это, кажется, делает ее «счастливой», но в идеале я бы предпочел решение, которое не является ручным.
Просто некоторые идеи ...
Я не знаю, как проверить, как / mnt
будет отвечать, когда вы обращаетесь к нему. Но у меня есть идеи, как более точно предсказать это.
Вы можете использовать smbclient
или nmap
, чтобы попытаться подключиться к серверу. Или запустите что-то в фоновом режиме с cron
и т. Д., Которое отлично выглядит как файл в / mnt - таким образом он ничего не замедляет при истечении времени ожидания. Если какой-либо из тестов не прошел, сообщите об этом веб-приложению.
test -d / mnt && echo true
также не работает, когда файловый сервер не работает ... если это помогает. Но вам нужно подождать, пока он истечет.
smbclient // host / share -Uuser password
вернет почти мгновенно, если сервер не работает , так что это не сильно замедлит работу. nmap
тоже, но на самом деле он не пытается войти на файловый сервер.
Я надеюсь, что кое-что из этого будет полезно.