Итак, у нас может быть какая-то заинная утечка в нашем программном обеспечении. Мы используем Mono и запускаем множество процессов в течение недель / месяцев. В конце концов, мы больше не можем появляться на машинах наших клиентов. Обычно на то, чтобы что-то остановить, уходит ~ 20 часов. Это исправляет закрытие и повторное открытие нашего приложения.
Когда порождение не удается, выполняется менее 500 процессов и обрабатывается менее 1000 файлов во всей системе. ulimits для файлов установлены на высокий уровень, лимит процесса составляет около 8 КБ. Мы используем CentOS 6.2.
Если мы утекаем эти PID или дескрипторы и каким-то образом стандартные ps
и lsof
команды просто не показывают их (как и / proc), мне нужен способ подключиться к ядру или чему-то еще, чтобы увидеть, какие текущие значения соответствуют этим ограничениям.
Как только мы подтвердим, что это проблема, я получу забавную задачу - попытаться расшифровать, что ее вызывает ... Но это на другой день.
Насколько нам известно, это приложение работает на многих других машинах Linux без каких-либо проблем (другие клиенты не сообщали нам об этой проблеме).
Есть идеи, как я могу найти значение метрик, для которых ulimit устанавливает границы? Я отчаянно надеюсь, что мне не придется самому писать программы на C, но я не прочь сделать это, если это необходимо.