У меня есть веб-сервер 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
, что может усугубить ситуацию, хотя я полагаю, что если я решу проблемы с хостом, то, надеюсь, контейнер аналогичным образом войдет в строй.
Любой совет будет очень признателен!
РЕДАКТИРОВАТЬ: Я добавлю, что на данный момент мы отключили некорректное монтирование и закомментировали строку из fstab, и это, кажется, делает ее «счастливой», но в идеале я бы предпочел решение, которое не является ручным.
Просто идеи ...
Я не знаю, как проверить, как /mnt
ответит, когда вы получите к нему доступ. Но у меня есть идеи, как это точнее предсказать.
Вы могли бы использовать smbclient
или nmap
для попытки подключения к серверу. Или пусть что-то работает в фоновом режиме с cron
и т. д., который выглядит нормально файл в / mnt - таким образом он ничего не замедляет при истечении времени ожидания. Если какой-либо из тестов не прошел, сообщите об этом веб-приложению.
test -d /mnt && echo true
также не работает, когда файловый сервер не работает ... если это помогает. Но вам нужно подождать, пока он не истечет.
smbclient //host/share -Uuser password
вернется почти мгновенно, если сервер не работает так что это не сильно замедлит. nmap
тоже, но на самом деле он не пытается войти на файловый сервер.
Я надеюсь, что некоторые из них будут вам полезны.