В проекте мы столкнулись с проблемой, связанной с аварийным завершением агента докера «На устройстве не осталось места».
На одном из узлов кластера K8S мы выполнили команду:
# ps -eLf | grep './DotNetApp' | awk '{print $10}' | wc -l
13882
Это означает, что все мои процессы .Net имеют 13882 потока.На узле с этой утечкой ограничено максимальное количество потоков.
Чтобы проверить лимит, вы можете выполнить:
root@ip-172-20-104-47:~# cat /proc/sys/kernel/pid_max
32768
«Потоки» - это сумма, но pid_max относится к пулу идентификаторов.И стручки могут легко достигнуть этого предела и вызвать аварийную остановку на узле.
Мы используем CentOS для работника K8S.Мы попробовали Ubuntu и получили тот же результат.
У вас есть идеи, почему у нас такая утечка потоков на узлах Linux в .net core 2.2?