Во время установки mongo db я обнаружил предупреждение, в котором говорится
мягкие ограничения слишком низкие. rlimits установлен на 1024 процесса, 64000 файлов. Количество процессов должно быть не менее 32000: 0,5 количества файлов.
Я нашел довольно много сайтов, описывающих, как увеличить лимит открытых файлов системы и пользователя, но я не нашел, в какой степени я могу / должен увеличивать эти значения.
Эти значения зависят от ресурсов сервера? Если да, то как я могу выяснить, какое максимальное значение я должен установить для своей системы?
По-видимому, для производительности mongodb важны две настройки (ограничение на количество открытых файлов и количество процессов). Как мне правильно настроить количество процессов? Как проверить, не использую ли я слишком высокие значения?
Я не думаю, что это говорит вам о том, что количество процессов слишком мало в абсолютном смысле. Это говорит вам соотношение MaxProcesses: MaxOpenFiles надо настроить.
В зависимости от вашего оборудования, ожидаемой нагрузки и других требований к ресурсам вам нужно будет решить, какие ограничения вы хотите наложить на базу данных и другие приложения.
Ты можешь использовать cat /proc/sys/fs/file-max
чтобы узнать, какие max-файлы могут быть открыты одновременно всем вашим сервером. Linux не имеет внутреннего ограничения на количество процессов, но если это количество слишком велико по сравнению с количеством ядер, производительность может пострадать. Вы можете узнать, какие текущие максимально разрешенные потоки для вашего сервера (если есть), используя cat /proc/sys/kernel/threads-max
. Вы также можете записать в этот файл большее или меньшее значение, чтобы настроить производительность. Теперь вы знаете общие ограничения вашего сервера.
Затем оцените типичное и максимальное количество одновременных подключений, которые вы ожидаете для db. Обычно вы хотите установить для каждого пользователя ограничение на количество файлов, достаточно большое, чтобы легко справиться хотя бы со стандартной нагрузкой. Скорее всего, вы можете выбрать значение, превышающее максимальное ожидаемое количество подключений, но только вы можете решить, имеет ли это смысл для вашего общего использования и ограничений сервера. Вы можете выбрать значение для максимального числа процессов на пользователя, равное максимальному количеству файлов или меньшее, чем максимальное количество файлов, но mongo предупреждает вас, чтобы вы не устанавливали максимальное количество процессов для каждого пользователя меньше половины максимального количества файлов на пользователя, предположительно потому, что каждое соединение нуждается в процессе (потоке), а также в файле.
По сути, вы просто хотите убедиться, что вы не слишком щедры, рискуя исчерпать ресурсы, и не слишком экономны, рискуя узкими местами в приложении. Как правило, вы начинаете с первоначальной оценки этих ограничений и планируете изменить их позже, если вам это нужно, на основе фактического использования и производительности.
После того, как у вас есть предположение об этих двух ограничениях ресурсов, используйте ulimit для установки max-файлов и max-процессов. на пользователя. Позже вы можете настроить эти значения в зависимости от фактического использования и производительности.