Слишком много открытых файлов на Debian

Я успешно использовал TrafMeter для того, чтобы сделать это, для 50 компаний человека, его дешевого и работ вполне прилично для сбора необработанных данных. Это может зарегистрироваться к базе данных SQL или базе данных Access. Данные, которые Вы вынимаете, являются необработанными сетевыми данными, так, возможно, должен был бы отфильтровать и представить данные хорошим способом, если Ваш побеспокоенный.

15
задан 22 November 2017 в 14:11
7 ответов

Если Ваш процесс запускается с помощью сценария, можно поместить вызов в ulimit в сценарии только до казни демона.

Если Вы хотите увеличить ulimit для своего пользователя, или для всех пользователей, можно установить пределы, которые применяются через pam_limits на входе в систему. Они установлены в /etc/security/limits.conf. В Вашем случае Вы могли сделать что-то как:

*               hard    nofile             2048

Обратите внимание, что "трудно" обозначает жесткий предел - тот, который не может быть превышен и не может быть изменен. Мягкий предел может быть изменен пользователем (например, кто-то без корневых возможностей), но не вне жесткого предела.

Читайте limits.conf для получения дополнительной информации об использовании pam_limits.

12
ответ дан 2 December 2019 в 20:47
  • 1
    В пределах conf у меня есть 2 строки: * мягкий nofile 4096 * твердый nofile 8192, Которые не имеют никакого эффекта. –  FoxyBOA 5 June 2009 в 13:15
  • 2
    И you' ve вышел и зашел снова начиная с тестирования их? Это будет означать регистрироваться прямо из X / GNOME / KDE и т.д., если you' ре пробуя это на локальной машине –  Daniel Lawson 5 June 2009 в 13:36
  • 3
    Да./etc/security/limits.conf doesn' t работают на меня. I' ll пробуют второй подход. –  FoxyBOA 5 June 2009 в 13:53
  • 4
    /etc/security/limits.conf работы только для сервисов, которые используют pam и pam модуль pam_limits (см./etc/pam.d/для конфигурации PAM каждого сервиса и/etc/pam.d/common -* в особенности). Это таким образом касается всех сеансов пользователя, созданных sshd, gdm, входом в систему, и т.д. Это doesn' t касаются всех программ, запущенных во время начальной загрузки... –  Raphaël Hertzog 6 June 2009 в 15:08
  • 5
    Я действительно говорил что-то тому эффекту, но благодарю разъяснить его. OP hasn' t разъяснился если it' s обслуживание или процесс его пользователь работает. –  Daniel Lawson 7 June 2009 в 07:02

Существует также "общее количество макс." открытого набора файлов в ядре, можно проверить текущую установку с:

cat /proc/sys/fs/file-max 

И установленный новое значение с:

echo "104854" > /proc/sys/fs/file-max

Если Вы хотите сохранить конфигурацию между перезагрузками, добавляют

sys.fs.file-max=104854

кому:

/etc/sysctl.conf

Проверять текущее макс. использование файла:

[root@srv-4 proc]# cat /proc/sys/fs/file-nr
3391    969     52427
|        |       |
|        |       |
|        |       maximum open file descriptors
|        total free allocated file descriptors
total allocated file descriptors
(the number of file descriptors allocated since boot)
13
ответ дан 2 December 2019 в 20:47

Поскольку другие сказали, что можно применить определенные пределы на пользователя или группу в/etc/security/limits.conf.

Примечание: ulimit-n показывает мягкий предел.

ulimit -H -n 

покажет Вам жесткий предел.

Это делает ulimit-a, и ulimit-n производят довольно сбивающий с толку, если бы, например, Вы увеличивали число файлов от 1 024 до 4 096, поскольку Вы ожидали бы видеть вывод жесткого предела, но Вы все еще видите 1024, который является мягким пределом.

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

4
ответ дан 2 December 2019 в 20:47

Это зависит от того, как Вы запускаете свой продолжительный процесс. Если это запускается во время начальной загрузки (через/etc/rcX.d /* сценарии) затем, необходимо поместить вызов ulimit в сценарий запуска, поскольку предел по умолчанию устанавливается ядром, и это не является настраиваемым, не перекомпилировав его.

Используя /etc/security/limits.conf мог работать, если Вы используете cron запустить его, например, с записи как это:

@reboot $HOME/bin/my-program

Это должно работать, потому что/etc/pam.d/cron включает pam_limits.so.

1
ответ дан 2 December 2019 в 20:47

Имейте в виду, что если вы запустите свой процесс с помощью start-stop-daemon, установка ulimits в /etc/security/limits.conf не сработает. Если вы, например, хотите увеличить лимит открытых файлов для tomcat до 20000, вам нужно добавить их в строки в / etc / default / tomcat :

ulimit -Hn 32768
ulimit -Sn 32768

Я столкнулся с этой проблемой в debian 6.0.4 Для другого процесса данные ответы должны помочь.

2
ответ дан 2 December 2019 в 20:47

Очень хорошая команда - ulimit -n , но есть проблема со слишком большим количеством подключений и слишком большим количеством открытые файлы:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 519357
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
-2
ответ дан 2 December 2019 в 20:47

Вы можете добавить это в /etc/security/limits.conf

root soft nofile 100000
root hard nofile 100000

save then reboot.

.
-1
ответ дан 2 December 2019 в 20:47

Теги

Похожие вопросы