nfsd: too many open connections

Автор PIKNIK, 06 сентября 2016, 13:15:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

PIKNIK

Добрый день!

Имеется Debian 7.6. Я на нём внутри сети сделал NFS-сервер и экспортировал папку с документами. Но как только я настроил клиентов на автоматическое монтирование NFS при запуске системы (около 2000 клиентов), я обнаружил, что часто клиентов не могут примонтировать NFS-каталог с ошибкой таймаута.

Я полез в логи и обнаружил гурьбу сообщений:
Sep  6 12:09:08 dns kernel: [25709759.646583] nfsd: too many open  connections, consider increasing the number of threads.

Само собой сервер немного офигел от такого количества подключений и отказывается принимать новые.

Полазив по интернету я нашёл только один совет: увеличить RPCNFSDCOUNT в /etc/default/nfs-kernel-server и в /etc/init.d/nfs-kernel-server. Изначально там стояло 8, я пробовал сначала 16, потом 32 и уже потом 64. Только на 64-х сообщения "too many open connctions" перестали появляться, однако при попытке вручную примонтировать NFS-каталог от клиента я до сих пор сталкиваюсь с ошибкой таймаута. Демоны перезагружал, сервер НЕ перезагружал.

Другие решения я в Интернете на нашлись. Да они и не под debian были, а под CentOS'ы, SUSE и пр.

Подскажите, что мне нужно отредактировать, чтобы подключать такое большое количество NFS-соединений?

gardarea51

Тут наверное проблема в "автоматическом" монтировании со стороны клиентов.
Могу врать, но скорее всего вам надо менять параметры ядра, сетевые, либо на живую, либо прописав их в /etc/sysctl.conf.
А вот какие именно - не подскажу, что-то вроде "количества входящих одновременных tcp соединений".

ihammers

Цитата: PIKNIK от 06 сентября 2016, 13:15:43Я на нём внутри сети сделал NFS-сервер и экспортировал папку с документами. Но как только я настроил клиентов на автоматическое монтирование NFS при запуске системы (около 2000 клиентов), я обнаружил, что часто клиентов не могут примонтировать NFS-каталог с ошибкой таймаута.
А всем этим клиентом нужно одновременно подключаться к NFS? Подключение настроено через fstab или autofs?

Можете привести пример конфигов клиента и сервера?
Debian GNU/Linux Bookworm, LXQt/OpenBox: AMD Ryzen 5 5600G / 64Gb RAM
_______________________________
Debian GNU/Linux Bookworm, без графики: AMD Phenon X4 / 16Gb RAM
_______________________________
Debian GNU/Linux Bookworm, LXQt/OpenBox: Acer Aspire One 722 AMD C60 / 8Gb RAM / ATI HD6290

PIKNIK

Всем этим клиентам нужно в течении рабочего дня держать примонтированным NFS-каталог на случай, если пользователю срочно потребуется взять от туда какой-нибудь файл.

Настройки NFS у меня дефорлтые (кроме RPCNFSDCOUNT, конечно):

root@wer:~# cat /etc/default/nfs-kernel-server
# Number of servers to start up
RPCNFSDCOUNT=64

USE_KERNEL_NFSD_NUMBER="8"

# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0

# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS=--manage-gids

# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=

# Options for rpc.svcgssd.
RPCSVCGSSDOPTS=

root@wer:~# cat /etc/default/nfs-common
# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".

# Do you want to start the statd daemon? It is not needed for NFSv4.
NEED_STATD=

# Options for rpc.statd.
#   Should rpc.statd listen on a specific port? This is especially useful
#   when you have a port-based firewall. To use a fixed port, set this
#   this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
#   For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS
STATDOPTS=

# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=

# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=

root@wer:~# cat /etc/exports
/mnt/samba/docs *(ro,no_subtree_check,no_all_squash,no_root_squash,async)


Клиенты подключаются через rc.local:
mount -o nolock 10.0.0.15:/mnt/samba/docs/ /mnt/docs/ &

ihammers

Цитата: PIKNIK от 12 сентября 2016, 11:30:32Всем этим клиентам нужно в течении рабочего дня держать примонтированным NFS-каталог на случай, если пользователю срочно потребуется взять от туда какой-нибудь файл.
Я бы посоветовал использовать autofs, подключение автоматически <<по запросу>>. Это снимет нагрузку на сервер.

Информацию по настройки autofs можно найти https://wiki.debian.org/AutoFs, раздел <<Configuring autofs>>. Там вам потребуется установить autofs и поправить один файл.
Debian GNU/Linux Bookworm, LXQt/OpenBox: AMD Ryzen 5 5600G / 64Gb RAM
_______________________________
Debian GNU/Linux Bookworm, без графики: AMD Phenon X4 / 16Gb RAM
_______________________________
Debian GNU/Linux Bookworm, LXQt/OpenBox: Acer Aspire One 722 AMD C60 / 8Gb RAM / ATI HD6290