>> Утром на сервере вылезла проблема - как мне кажется закончились
>> файловые дескрипторы, /bin/login даже не работает, strace выводит
>>
>> getrlimit(RLIMIT_NOFILE, {rlim_cur=600000, rlim_max=600000}) = 0
>>
>> т.е. лимит исчерпан и далее
Почему?
On success, zero is returned. On error, -1 is returned, and
errno is
set appropriately.
rlim_cur это и есть текущий лимит.
login может не работать, например, из-за pam или нехватки памяти, своп на
сервере есть?
В dmesg страшных сообщений нету?
> lsof показывает не больше 7000.
Значит дело не в дескрипторах.
>> close(599999) = -1 EBADF (Bad file descriptor)
>> ...
>> close(599988) = -1 EBADF (Bad file descriptor)
>>
>> т.е. даже не восстановить уже мертвые (ни один рабочий процесс таким
>> кол-вом не пользуется),
Судя по ману, getrlimit(RLIMIT_NOFILE) так и должен работать:
RLIMIT_NOFILE
Specifies a value one greater than the maximum file
descriptor
number that can be opened by this process. Attempts
(open(),
pipe(), dup(), etc.) to exceed this limit yield the
error
EMFILE.
А чей это был стрейс? Самопальной проги?
--
// Черный Плащ