В моем приложении у меня есть разные модули, которые общаются через posix-очереди, проблема в том, что Im получает вышеупомянутую ошибку при достижении предела, я установил предел в обоих
sysctl fs.file-max = new_value
а также
ulimit -n
но это некоторая жестко закодированная ценность, есть ли какая-либо передовая практика для преодоления этого? Я попытался закрыть дескрипторы mq_close
но затем все модули в приложении могут использовать любое сообщение в любое время. Поэтому я не могу закрыть все дескрипторы.
Существует два типа ограничений ресурсов в linux/UNIX Soft limit & Hard limit. Максимальные дескрипторы, которые вы можете установить, соответствуют жесткому пределу. Есть способы увеличить жесткий предел, но, честно говоря, я никогда не пробовал так, и я бы не рекомендовал это по двум причинам:
Наконец, я бы порекомендовал вам даже увеличить мягкий лимит, используя функцию setrlimit из вашей программы, поскольку увеличение ограничения на оболочку является временным, и если вы установите его в профиле, это увеличит предел для всех программ.