В какой-то момент на домашнем компьютере с FreeBSD 9.0 + KDE 4 в логе /var/log/messages стало появляться сообщение:
Nov 6 07:26:53 setevoy-home kernel: kern.maxfiles limit exceeded by uid 1001, please see tuning(7).
Узнаем, кто такой UID 1001:
# cat /etc/passwd | grep 1001
setevoy:*:1001:1001:User &:/home/setevoy:/usr/local/bin/bash
Внезапно 🙂
Теперь, проверим, сколько в данный момент открытых файлов:
# pstat -T
4313/12328 files
0M/5099M swap space
И проверим указанный в данный момент лимит:
# sysctl -a | grep maxfiles
kern.maxfiles: 12328
Или так:
# sysctl kern.maxfiles
kern.maxfiles: 12328
Т.е. в данный момент используется 4313 из максимально разрешенных 12328 одновременно открытых файлов.
Снять ограничение можно двумя способами. Первый — вручную изменить параметр kern.maxfiles. Для этого — выполним:
# sysctl kern.maxfiles=24656
И проверим:
# sysctl kern.maxfiles
kern.maxfiles: 24656
Что бы изменения вступали в силу при загрузке системы — в файл /etc/sysctl.conf добавляем строку:
kern.maxfiles=24656
Другой вариант, НЕ рекомендуемый к использованию — увеличить значение kern.maxusers. На основе этого значения — система автоматически установит параметры kern.maxfilesperproc и kern.maxfiles.
Параметр kern.maxusers является параметром, устанавливаемом «только для чтения», поэтому для его изменения — отредактируем файл /boot/loader.conf добавив в него такую строку:
# cat /boot/loader.conf | grep max
kern.maxusers=»512″
После этого — требуется перезагрузить машину.
После перезагрузки — проверим новые параметры:
# sysctl kern.maxusers
kern.maxusers: 512
# sysctl kern.maxfiles
kern.maxfiles: 16424
# sysctl kern.maxfilesperproc
kern.maxfilesperproc: 14781