FreeBSD: kernel: kern.maxfiles limit exceeded

Автор: | 06/11/2012
 

В какой-то момент на домашнем компьютере с 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