- ulimit настройка частых проблем в Linux
- Too many open files
- ulimit размеры файлов
- ulimit количество открытых сокетов
- Как изменить значение Open File Limit — 3 варианта
- Feb 1, 2018 08:56 · 488 words · 3 minute read ulimit
- 3 способа изменить ограничение на количество открытых файлов в ОС Linux
- Зачем суживать количество открытых файлов
- Бригада ulimit
- Модуль подключаемых модулей аутентификации (PAM)
- Общесистемный предел
- Русские Блоги
- Системные настройки Linux: подробное объяснение команды ulimit
- грамматика
- Опции
- Примеры
- 1. Мягкие и жесткие могут быть установлены вместе так, чтобы
- 2. Когда вступает в силу настройка ulimit
- 3. Nofile не может быть установлен неограниченно, noproc может быть установлен
- Интеллектуальная рекомендация
- Пошаговая загрузка файла Spring MVC-09 (на основе файла загрузки клиента Servlet3.0 + Html5)
- Создайте многоканальное окно в приложениях Win32
- Путь к рефакторингу IOS-APP (3) Введение в модульное тестирование
- Tree——No.617 Merge Two Binary Trees
ulimit настройка частых проблем в Linux
ulimit — ограничения текущего процесса, например количество одновременно открытых файлов. Справка man limits.conf. Конфигурационный файл находится /etc/security/limits.conf.
Установка лимитов с помощью ulimit может предотвратить катастрофу в ваших системах Linux, но вам нужно предвидеть, где ограничения будут иметь смысл, а где они вызовут проблемы.
Чтобы увидеть ограничения, связанные с вашим логином, используйте команду ulimit -a. Если вы используете учетную запись обычного пользователя, вы, скорее всего, увидите что-то вроде этого:
Изменять лимиты вы можете в конфигурационном файле, обычно /etc/security/limits.conf, или при помощи командной строки. Помните что при изменении лимитов через командную строку, ваши изменения не сохранятся после перезагрузки ОС. Например для изменения максимального количества пользовательских процессов (max user processes) используйте ключ u (из листинга вывода команды ulimit -a):
В limits.conf для каждого пользователя или группы можно задать ограничения. Каждое ограничение задается в отдельной строке. Например для группы developers настроим ограничения пределов открытия файлов, где hard жестко задали количество, а при достижении нижнего предела значения soft пользователи будут получать предупреждения):
Too many open files
Нужно увеличить ограничение на количество одновременно открытых файлов в файле limits.conf.
ulimit размеры файлов
В основном при работе в системе UNIX мы считаем, что ее ресурсы безграничны. Например, мы не заботимся о том, что созданный файл получится «слишком большим», а это не так уж редко в персональных компьютерах на гибких дисках. Если же мы занимаемся сопровождением и администрированием системы UNIX, то мы должны быть готовы иметь дело с ситуациями, когда превышаются различные предельные значения системы. Всегда лучше исследовать эти вопросы заранее в некритичных ситуациях, поэтому давайте рассмотрим пределы размеров файлов и их смысл.
Некоторые параметры «зашиты» в ядро системы при ее генерации. Одним из таких значений является максимальный размер файла. Он определяет наибольшее число блоков, которые может занимать файл. Этот параметр тесно связан с принятым в UNIX методом использования индексных дескрипторов файла (inodes). Это наборы указателей, среди которых первые десять указывают на блоки данных, следующий указывает на другую таблицу, следующий — на таблицу, указывающую на таблицу и т.д.
Имеется еще одно ограничение размера файла, которое определено для каждого пользователя во время работы в системе — число ulimit (user limit — пользовательский предел). Это значение устанавливается в момент вашей регистрации в системе и представляет собой число блоков по 512 байт, которые вы можете записать в любой заданный файл. В shell’е имеется команда ulimit, которая при ее вызове без аргументов выводит это число. Эта же команда позволяет вам уменьшить ваше значение ulimit. Только суперпользователь (root) может УВЕЛИЧИТЬ значения ulimit.
Побочным эффектом уменьшения значения ulimit является то, что вы не можете снова увеличить его до регистрационного значения. Значение ulimit остается таким же на все время работы вашего shell, поэтому для восстановления регистрационного значения вам необходимо выйти из системы, а затем снова зарегистрироваться.
Еще одним интересным моментом является то, что если вы установите ваше значение ulimit равным 0, вы не сможете создать никакие файлы! Максимально допустимым размером файла в данном случае является нулевой, поэтому никакой файл не может быть создан. Это представляется достаточно резонным, однако существуют такие ситуации, когда файл нулевого размера МОЖЕТ существовать. Опять же, для восстановления вашего обычного значения ulimit необходимо выйти из системы, а затем снова зарегистрироваться.
Как отмечалось ранее, увеличить значение ulimit может только суперпользователь. Эта процедура довольно проста. Сначала нужно увеличить значение ulimit командой ulimit, а затем запустить shell. Этот новый shell имеет новое значение ulimit. Если мы хотим, чтобы система загружалась с shell, имеющим большее значение ulimit, мы можем установить программу в inittab (таблице инициализации системы), чтобы эта операция выполнялась автоматически.
ulimit количество открытых сокетов
Ограничение на количество одновременно открытых сокетов. Обычно, большая часть nix систем ограничивает количество сокетов до 1024. Эти настройки можно изменить добавив в /etc/security/limits.conf следующие строчки:
Также можно установить лимит вручную, через:
Источник
Как изменить значение Open File Limit — 3 варианта
Feb 1, 2018 08:56 · 488 words · 3 minute read ulimit
Операционная система при открытии файла создает временный номер (неотрицательное целое число), называемый файловым дескриптором. Данный дескриптор (handle) можно использовать для работы с файлом.
Специальная область памяти зарезервирована под файловые дескрипторы, и именно от ее размера зависит, сколько файлов может быть открыто одновременно. Давайте разберемся, какими способами можно изменить значение Open File Limit в ОС Linux!
Операционной системе требуются ресурсы (прежде всего память) для управления каждым открытым файлом. Чтобы не возникла ситуация, когда один процесс завладел всеми доступными ресурсами операционной системы были введены лимиты. В ОС Linux существует два вида лимитов:
- soft limit — значение может изменяться во время выполнения процесса;
- hard limit — максимальное значение, которое не может быть превышено установкой значения soft limit .
Максимальное значение открытых файловых дескрипторов (файлы, которые пользователь открыл с момента логина) в системе можно просмотреть так:
Иногда по некоторым причинам требуется увеличить число доступных файловых дескрипторов для всей системы или для конкретного процесса. Сделать это можно следующими способами:
Вариант 1, используя ulimit .
Синтаксис команды следующий:
Опции могут быть следующими:
- -a — вывод текущих значений;
- -f — лимит размера файлов которые, могут быть созданы командной оболочкой;
- -n — лимит количества открытых файловых дескрипторов;
- -H и -S — Hard и Soft лимиты соответственно.
Смотрим текущий лимит на файловые дескрипторы:
Источник
3 способа изменить ограничение на количество открытых файлов в ОС Linux
Операционная система временно присваивает файлу номер, называемый дескриптором файла, когда он открыт для доступа. Особая область основной памяти зарезервирована для дескрипторов файлов, и размер этой области определяет, насколько файлов может быть открыто одновременно. Процессы в Linux ограничены рядом ограничений, какие также препятствуют их правильному выполнению, и каждый процесс имеет несколько ограничений, связанных с ним. Оболочка суживает количество файлов, которые программы могут открывать одновременно. В этой статье я покажу вам разные методы, которые вы можете использовать для изменения количества открытых файлов в Linux.
Зачем суживать количество открытых файлов
Поскольку операционной системе требуется память для управления каждым файлом, вы сможете столкнуться с ограничением количества файлов, которые можно открыть. Поскольку программа также сможет закрывать обработчики файлов, она может создавать множество файлов любого размера, пока все вразумительное дисковое пространство не будет заполнено. В этом случае одним из аспектов безопасности является предупреждение исчерпания ресурсов путем введения ограничений.
В Linux существует два вида ограничений:
- Soft Limit Свойство, которое может быть изменено процессом в любое время.
- Hard Limit обозначает наибольшее значение, которое не может быть превышено путем установки мягкого ограничения
Вы можете увидать максимальное количество открытых файловых дескрипторов в вашей системе Linux, как показано ниже:
# cat /proc/sys/fs/file-max100576
Свойство показывает количество файлов, которые пользователь может открыть за сеанс входа в систему, но вы обязаны заметить, что результат может отличаться в зависимости от вашей системы. По некоторым причинам может понадобиться увеличить значение набора ограничений. Вот почему ваша система Linux предлагает возможность (повышая или уменьшая) изменять эти ограничения, изменяя максимальное количество открытых файлов на процесс и на систему.
Бригада ulimit
Команду ulimit можно использовать для увеличения количества файлов, которые можно раскрыть в оболочке. Эта команда является встроенной командой bash, поэтому она влияет только на bash и програмки, запускаемые из него. Синтаксис ulimit следующий:
Ulimit [options [limit]]
Параметры определяют, что довольствуется. Вы можете увидеть некоторые варианты, как показано ниже
- -a (Передача текущих настроек): заставляет ulimit извещать о своих текущих настройках.
- -f (Ограничения файлов) ограничивает размер файлов, которые могут быть сделаны оболочкой.
- -n Ограничивает количество открытых файловых дескрипторов.
- -H и -S (Жесткие и мягкие ограничения) параметры меняют другие параметры, в результате чего они устанавливаются как жесткие или мягкие ограничения соответственно. Жесткие ограничения смогут впоследствии не увеличиваться, но мягкие ограничения могут быть. Если ни один из вариантов не предусмотрен, ulimit ставит как жесткие, так и мягкие ограничения для указанной функции.
Итак, чтобы увидеть текущее ограничение, вы сможете сделать, как показано ниже:
$ ulimit — a | grep openopen files (-n) 1024
Вы можете проверить жесткий предел, как показано ниже:
$ ulimit — Hn4096
И мягкий предел, как показано ниже:
$ ulimit — Sn1024
Вы можете изменить ограничение, как представлено ниже
$ ulimit — n 3000
И вы можете проверить это ниже:
$ ulimit — n 3000
Проблема сейчас в том, что если вы выйдете из системы и войдете в систему или перезагрузите пк, значение будет сброшено. Помните, что для того, чтобы сделать эти ограничения более постоянными, нужно отредактировать один из файлов конфигурации пользователя ( .bashrc or .profile ) или общесистемные файлы конфигурации ( /etc/bashrc or /etc/profile ) приплюсовав командную строку ulimit в конец файла, как показано ниже.
# vim. bash_profileulimit — n 3000
Теперь, простонар если вы перезагрузитесь, ограничение, установленное пользователем, будет постоянным. Вы можете увеличить только твердый лимит ( -Hn ) или мягкий лимит ( -Sn ), но вы должны заметить, что мягкие ограничения могут быть установлены другым пользователем, в то время как жесткие ограничения могут быть изменены только пользователем root после его аппараты.
Модуль подключаемых модулей аутентификации (PAM)
Устанавливать такие ограничения лучше всего с помощью Включаемых модулей аутентификации (PAM), называемых Pam_limits. Большинство основных дистрибутивов Linux используют этот часть как часть своей стандартной конфигурации PAM, поэтому он уже присутствует в некоторых системах Linux, но вам нужно станет настроить его, отредактировав /etc/security/limits. conf файл. Этот файл содержит четыре главных поля:
- Домен: Он описывает сущность, к которой применяется ограничение. Это может быть имя пользователя, заглавие группы (с формой @groupname) или подстановочный знак со звездочкой ( * ), который соответствует всем. Хотя вы должны заметить, что подстановочный знак не применяется к корневому пользователю
- Тип: В этом поле указывается ограничение как безжалостное или мягкое. Жесткий лимит устанавливается системным администратором и не может быть превышен ни при каких жизненных обстоятельствах, в то время как пользователь может временно превысить мягкий лимит. Вы также можете использовать тире ( — ), дабы указать, что ограничение является как жестким, так и мягким. Обратите внимание, что мягкий лимит может быть повышен до значения жесткого лимита
- Элемент: Он указывает, какой тип элемента ограничен. Это может быть Nofile (число открытых файлов данных), Fsize (размер файлов, созданных пользователем), Core (размер главных файлов) и т.д.
- Значение: Оно указывает значение, которое должно быть применено к пределу
Вы можете увидать, например, содержимое этого файла, как показано ниже:
# tail — f — n 12 /etc/security/limits. conf # ##* soft core 0#* hard rss 10000#@student hard nproc 20#@faculty soft nproc 20#@faculty hard nproc 50#ftp hard nproc 0#@student — maxlogins 4# End of file
Дабы отредактировать максимальное количество открытых файлов для всех пользователей, вы можете добавить, например, приплюсовать в конец файла строки ниже:
# vim /etc/security/limits. conf* hard nofile 20000* soft nofile 15000
После данного вам необходимо отредактировать файл /etc/pam. d/login
# vim /etc/pam. d/loginsession required pam_limits. so
Затем сохраните файл. Вы сможете проверить результат, как показано ниже:
Общесистемный предел
В системе Linux у нас есть Файл-макс, какой является максимальным дескриптором файлов (FD), и настройки по умолчанию для ulimit и file-max предполагают, что несколько юзеров будут совместно использовать систему. Вот почему эти настройки ограничивают количество ресурсов, используемых любым пользователем. Вы можете увеличить количество открытых файлов в Linux, отредактировав /etc/sysctl. conf или путем редактирования директивы Fs. file-max
Вы сможете увидеть текущее значение для открытых файлов с помощью команды
И вы можете менять значение по умолчанию, как показано ниже:
# sysctl — w fs. file-max=250000fs. file-max = 250000
Вы можете проверить итог, как показано ниже
С помощью Sysctl command, изменения применяются до следующей повторная загрузки. Чтобы сделать конфигурацию постоянной, вы можете напрямую отредактировать /etc/sysctl. conf файл, как представлено ниже:
# vim /etc/sysctl. conffs. file-max=250000
Если вы перечислите содержание /proc/sys/fs/file-max , вы увидите, что модифицирование не вступило в силу напрямую. Теперь вам нужно напрямую применить изменения с помощью опции — p бригады sysctl, как показано ниже:
Источник
Русские Блоги
Системные настройки Linux: подробное объяснение команды ulimit
команда ulimitИспользуется для ограничения доступа пользователей системы к ресурсам оболочки. Если вы не понимаете, что это значит, следующий параграф поможет вам понять:
Предположим, что существует такая ситуация, когда 10 человек одновременно входят в систему на хосте Linux, при условии неограниченных системных ресурсов, эти 10 пользователей одновременно открыли 500 документов, и предполагая, что размер каждого документа равен 10 М, это Ресурсы памяти системы будут сильно оспорены.
Реальная прикладная среда намного сложнее, чем это предположение. Например, во встроенной среде разработки различные ресурсы очень скудны. Для числа дескрипторов открытых файлов, размера выделенного стека, времени ЦП, Размер памяти и т. Д. Предъявляет очень строгие требования. Разумное ограничение и распределение ресурсов является не только необходимым условием обеспечения доступности системы, но и неразрывно связано с производительностью программного обеспечения, работающего в системе. В настоящее время ulimit может сыграть большую роль, это простой и эффективный способ добиться ограничения ресурсов.
ulimit используется для ограничения ресурсов, занимаемых процессом запуска оболочки, и поддерживает следующие типы ограничений: размер создаваемого файла ядра, размер блока данных процесса, размер файла, создаваемого процессом оболочки, размер блокировки памяти, резидентная память Размер набора, количество дескрипторов открытых файлов, максимальный размер выделенного стека, время ЦП, максимальное количество потоков для одного пользователя и максимальная виртуальная память, которую может использовать процесс Shell. В то же время он поддерживает жесткие и мягкие ограничения ресурсов.
В качестве временного ограничения ulimit может применяться к сеансам оболочки, вошедшим в систему с помощью его команд, заканчивая ограничение по окончании сеанса и не влияя на другие сеансы оболочки. Для долгосрочных фиксированных ограничений оператор команды ulimit может быть добавлен в файл, читаемый оболочкой входа в систему, действующей на конкретного пользователя оболочки.
грамматика
Опции
Примеры
Каждая строка вывода состоит из имени ресурса (единицы измерения, параметра команды ulimit) и мягкого ограничения. объяснить подробно:
размер основного файла Максимальное значение основного файла составляет 100 блков,
Сегмент данных процесса размера сегмента данных может быть произвольно большим
размер файла Файл может быть произвольно большим
ожидающие сигналы До 98304 ожидающих сигналов
максимальное количество заблокированной памяти Максимальное значение физической памяти, заблокированной задачей, составляет 32 КБ.
максимальный объем памяти Максимальная резидентная физическая память задачи
открывать файлы Задача может открывать до 1024 файлов одновременно
размер трубы Максимальное пространство трубы 4096 байт
Очереди сообщений POSIX Максимальное значение очередей сообщений POSIX составляет 819200 байт.
Максимальный размер стека процесса размера стека составляет 10240 байт.
процессорное время процессорное время, используемое процессом
максимальное количество пользовательских процессов Максимальное количество процессов (включая потоки), одновременно открытых текущим пользователем, составляет 98304.
виртуальная память не ограничивает максимальное адресное пространство процесса
блокировки файлов Максимальное количество файлов, которые можно заблокировать, не ограничено
Используйте команду ulimit для ограничения размера файла, что приводит к сбою команды копирования
ls: temp.txt: нет файла или каталога
Размер файла превышает лимит
Размер файла a.c составляет 5002 байта, а размер файла, который мы устанавливаем, составляет 512 байтов x 1 блок = 512 байтов.
1. Измените ограничение на количество файлов, которые могут быть открыты пользовательским процессом.
На платформе Linux, независимо от написания клиентских или серверных программ, при выполнении обработки TCP-соединений с высоким параллелизмом максимальное количество одновременных подключений должно быть ограничено количеством файлов, которые могут быть открыты системой для одного процесса пользователя одновременно (это происходит потому, что система Каждое TCP-соединение должно создавать дескриптор сокета, и каждый дескриптор сокета также является дескриптором файла). Вы можете использовать команду ulimit для просмотра системного ограничения на количество файлов, которые разрешено открывать текущему пользовательскому процессу:
Это означает, что каждому процессу текущего пользователя разрешено открывать до 1024 файлов одновременно. В этих 1024 файлах должны быть удалены стандартный ввод, стандартный вывод, стандартная ошибка, которую должен открыть каждый процесс. Сервер прослушивает сокет и сокет домена unix для межпроцессного взаимодействия. Дождитесь файлов, тогда оставшиеся файлы, доступные для подключения клиентского сокета, будут только около 1024-10 = 1014. Другими словами, по умолчанию коммуникационная программа на основе Linux допускает до 1014 одновременных TCP-соединений.
Для обработчиков связи, которые хотят поддерживать большее количество одновременных TCP-соединений, вы должны изменить мягкое ограничение и жесткое ограничение количества файлов, которые процесс текущего пользователя может открыть одновременно. Среди них, мягкое ограничение означает, что Linux может дополнительно ограничивать количество файлов, которые пользователь может открыть одновременно в пределах текущего диапазона системы, а жесткое ограничение — это количество файлов, которые система может открывать одновременно в соответствии с состоянием ресурсов аппаратного обеспечения системы (главным образом, системной памяти). Обычно мягкий предел меньше или равен жесткому пределу.
Самый простой способ изменить указанное выше ограничение — использовать команду ulimit:
В приведенной выше команде укажите максимальное число открытых файлов, разрешенное для одного процесса, которое должно быть установлено в . Если система отображает что-то вроде «Операция не разрешена», это означает, что изменение вышеуказанного предела не удалось, фактически, потому что значение, указанное в , превышает мягкое или жесткое ограничение количества файлов, открытых системой Linux для пользователя. Поэтому вам необходимо изменить мягкие и жесткие ограничения на количество открытых файлов для пользователей в системе Linux.
Первый шаг — изменить файл /etc/security/limits.conf и добавить в него следующую строку:
Среди них speng указывает ограничение на количество открытых файлов, которые должны быть изменены пользователем. Знак «*» может использоваться для изменения предела всех пользователей, «soft» или «hard» указывает, следует ли изменять «мягкий» или «hard limit»; , Которое является максимальным количеством открытых файлов (обратите внимание, что значение мягкого предела должно быть меньше или равно жесткому пределу). Сохраните файл после модификации.
Второй шаг — изменить файл /etc/pam.d/login и добавить в него следующую строку:
Это говорит Linux, что после того, как пользователь завершит вход в систему, должен быть вызван модуль pam_limits.so, чтобы установить максимальное ограничение системы на количество различных ресурсов, доступных пользователю (включая максимальное количество файлов, которые пользователь может открыть), и модуль pam_limits.so Прочитает конфигурацию из файла /etc/security/limits.conf, чтобы установить эти ограничения. Сохраните этот файл после модификации.
Третий шаг — проверить ограничение максимального количества открытых файлов на системном уровне Linux, используя следующую команду:
Это показывает, что эта система Linux позволяет открывать до 12158 файлов одновременно (то есть, включая общее количество файлов, открытых всеми пользователями), что является жестким ограничением на уровне системы Linux. Все ограничения на открытые файлы уровня пользователя не должны превышать это значение. Как правило, этот жесткий предел на уровне системы — это оптимальное максимальное количество одновременно открытых файлов, рассчитываемое системой Linux в соответствии с состоянием системных аппаратных ресурсов при запуске. Если в этом нет особой необходимости, этот предел не следует изменять, если вы не хотите ограничивать количество открытых файлов для уровня пользователя. Установите значение, которое превышает этот предел. Чтобы изменить это жесткое ограничение, нужно изменить скрипт /etc/rc.local и добавить в него следующую строку:
Это заставит Linux принудительно установить ограничение на количество открытых файлов на уровне системы до 22158 после завершения загрузки. Сохраните этот файл после модификации.
После выполнения описанных выше шагов перезапустите систему.В общем случае вы можете задать для указанного значения максимальное количество файлов, которые система Linux может одновременно открыть для указанного процесса указанного пользователя. Если вы используете команду ulimit-n для проверки количества открытых файлов, которые пользователь может открыть после перезапуска, ограничение все равно будет ниже максимального значения, установленного на предыдущем шаге. Это может быть связано с тем, что команда ulimit -n использовалась для одновременного открытия пользователя в сценарии входа пользователя в систему / etc / profile Количество файлов ограничено. Когда система ограничивает максимальное количество файлов, которые пользователь может открыть одновременно через ulimit-n, вновь измененное значение может быть меньше или равно значению, установленному ulimit-n в прошлый раз, поэтому с помощью этой команды невозможно увеличить это предельное значение из. Поэтому, если вышеуказанные проблемы существуют, вы можете открыть только файл сценария / etc / profile, найти в файле, используется ли ulimit-n для ограничения максимального количества файлов, которые пользователь может открыть одновременно, и, если он найден, удалить эту строку команды, Или измените установленное значение на соответствующее значение, затем сохраните файл, и пользователь сможет выйти и снова войти в систему.
Посредством вышеупомянутых шагов системное ограничение на количество открытых файлов снимается для программы обработки связи, поддерживающей обработку одновременных высокопроизводительных соединений TCP.
2. Измените ограничения на соединение TCP ядром сети
При написании обработчика клиентских коммуникаций, который поддерживает высокопараллельные TCP-соединения в Linux, иногда я обнаруживаю, что, хотя система сняла ограничение на количество одновременно открытых пользовательских файлов, все равно будет количество одновременных TCP-соединений, которое увеличится до определенного числа. Явление, что новое соединение TCP не может быть успешно установлено. Есть много причин для этого.
Первая причина может заключаться в том, что сетевое ядро Linux имеет ограничения на диапазон номеров локальных портов. В это время, при дальнейшем анализе того, почему TCP-соединение не может быть установлено, вы обнаружите, что проблема заключается в том, что возврат вызова connect () завершился неудачно, а системное сообщение об ошибке «Не удается назначить запрашиваемый адрес». В то же время, если вы используете инструмент tcpdump для мониторинга сети в это время, вы обнаружите, что сетевой трафик клиента отправляет пакеты SYN, когда TCP-соединения вообще нет. Эти обстоятельства указывают на то, что проблема в том, что существуют ограничения в ядре локальной системы Linux. Фактически, основная причина проблемы заключается в том, что модуль реализации протокола TCP / IP ядра Linux ограничивает диапазон номеров локальных портов, соответствующих всем клиентским TCP-соединениям в системе (например, ядро ограничивает диапазон номеров локальных портов 1024
32768 между). Если в системе одновременно слишком много TCP-клиентских подключений, потому что каждое TCP-клиентское соединение занимает уникальный номер локального порта (этот номер порта находится в пределе диапазона номеров локальных портов системы), если он существует Из соединений клиента TCP заполнили все номера локальных портов, тогда невозможно назначить номер локального порта для нового соединения клиента TCP в это время, поэтому в этом случае система не выполнит вызов connect () И установите сообщение об ошибке «Не удается назначить запрашиваемый адрес». Для этих логик управления вы можете просмотреть исходный код ядра Linux.В качестве примера можно взять ядро linux2.6 в файле tcp_ipv4.c:
Обратите внимание на управление доступом к переменной sysctl_local_port_range в приведенной выше функции. Инициализация переменной sysctl_local_port_range задается в следующей функции в файле tcp.c:
Диапазон номеров локальных портов, установленный по умолчанию при компиляции ядра, может быть слишком мал, поэтому вам нужно изменить это ограничение диапазона локальных портов.
Первый шаг — изменить файл /etc/sysctl.conf и добавить в него следующую строку:
Это указывает на то, что система ограничивает диапазон локальных портов между 1024 и 65000. Обратите внимание, что минимальное значение диапазона локального порта должно быть больше или равно 1024, максимальное значение диапазона порта должно быть меньше или равно 65535. Сохраните этот файл после модификации.
Второй шаг — выполнить команду sysctl:
Если в системе нет сообщения об ошибке, это означает, что новый диапазон локальных портов устанавливает брандмауэр IP_TABLE сетевого ядра nux для ограничения максимального количества отслеживаемых соединений TCP. В это время программа будет выглядеть заблокированной в вызове connect (), как при сбое. Если вы используете инструмент tcpdump для мониторинга сети, вы также обнаружите, что сетевой трафик клиента отправляет пакеты SYN, когда нет TCP-соединения. Поскольку брандмауэр IP_TABLE отслеживает состояние каждого TCP-соединения в ядре, информация об отслеживании будет помещена в базу данных conntrack в памяти ядра. Размер этой базы данных ограничен. Когда в системе слишком много TCP-соединений, емкость базы данных недостаточна. IP_TABLE не может установить информацию трассировки для новых соединений TCP, поэтому она кажется заблокированной в вызове connect (). В этом случае вы должны изменить ограничение ядра на максимальное количество отслеживаемых соединений TCP.Этот метод аналогичен изменению ограничения ядра для диапазона номеров локальных портов:
Первый шаг — изменить файл /etc/sysctl.conf и добавить в него следующую строку:
Это указывает на то, что система ограничивает максимальное количество отслеживаемых соединений TCP до 10240. Обратите внимание, что этот предел должен быть как можно меньше, чтобы сохранить использование памяти ядра.
Второй шаг — выполнить команду sysctl:
Если в системе нет сообщения об ошибке, это означает, что система успешно изменила новый максимальный предел отслеживаемого соединения TCP. Если вы устанавливаете в соответствии с вышеуказанными параметрами, теоретически, один процесс может установить до 10 000 TCP-клиентских подключений одновременно.
sysctl -p сообщает об ошибке net.ipv4.ip_conntrack_max «- неизвестный ключ: modprobe ip_conntrack
1. Мягкие и жесткие могут быть установлены вместе так, чтобы
Если установлен только один, он не будет работать
2. Когда вступает в силу настройка ulimit
Выйдите из текущего сеанса, войдите снова или выполните напрямую из командной строки
3. Nofile не может быть установлен неограниченно, noproc может быть установлен
Тогда вы будете отклонены, потому что nproc может
Интеллектуальная рекомендация
Пошаговая загрузка файла Spring MVC-09 (на основе файла загрузки клиента Servlet3.0 + Html5)
пример тестовое задание Исходный код Несмотря на загрузку файлов в Servlet3.0 +, мы можем очень легко программировать на стороне сервера, но пользовательский интерфейс не очень дружелюбен. Одна HTML-ф.
Создайте многоканальное окно в приложениях Win32
Создайте многоканальное окно в приложениях Win32, создайте несколько оконных объектов одного и того же класса Windows, а окна объектов разных классов окон. .
Путь к рефакторингу IOS-APP (3) Введение в модульное тестирование
IOS-APP реконструкция дороги (1) структура сетевых запросов IOS-APP реконструкция дороги (два) Модельный дизайн При рефакторинге нам нужна форма, позволяющая вносить смелые изменения, обеспечивая при .
Tree——No.617 Merge Two Binary Trees
Problem: Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge them into a new bin.
Источник