Я знаю, что есть много таких вопросов по SO, но я не вижу ничего, что соответствовало бы моей конкретной ситуации.
Я запускаю консольное приложение .NET через Mono в Ubuntu. Приложение работает как сервер и принимает соединения через TcpListener (TcpListener.AcceptTcpClient ()). У меня проблема в том, что через некоторое время программа начинает выдавать исключения «Слишком много открытых файлов».
Я увеличил максимальное количество файлов в Ubuntu в двух известных мне местах:
root soft nofile 240000
root hard nofile 320000
(Рассматриваемый процесс запускается от имени пользователя root)
fs.file-max = 2000000
Оба имеют значение ~ 200000.
Если проверить количество описаний открытых файлов в системе, оно будет всего 996, хотя система выдает ошибки.
У меня одна и та же программа работает на нескольких серверах Windows с большим количеством подключений, и у них никогда не возникает этой проблемы.
Есть идеи, что могло вызвать эту ошибку?