Кое-что
нашёлГоворят, что можно изменить предел открытых файлов одним процессом вот такими командами:
[root@pink ~]# ulimit -n
1024
[root@pink ~]# ulimit -n 2048
[root@pink ~]# ulimit -n
2048
[root@pink ~]# sh
sh-4.1# ulimit -n
2048
Однако этот код не работает абсолютно. Во-первых, значение ulimit -n сбрасывается после перезапуска терминала. Я сначала подумал, что оно и должно действовать в рамках только одной сессии. Но нет - не работает даже там. Меняю ulimit -n, следующей командой запускаю
transmission-gtk
параллельно мониторю
ls -l /proc/TRANSMISSION-PID/fd | wc -l
в соседнем терминале.
Минут через 20 (клиенту нужно время на "разогрев": набор сидов и пиров) число достигло 1025 (не 1024) и застыло, и в ту же секунду в первом терминале посыпались те самые ошибки
Unable to save resume file: Too many open files.
Так где же по-настоящему изменяется предел открытых файлов?
cat /proc/TRANSMISSION-PID/limits
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
То есть, ещё есть куда "расти". Нужно лишь поднять этот soft limit. Но как?