Приложение Dotnet перестает принимать соединения через некоторое время - PullRequest
0 голосов
/ 13 февраля 2019

мы имеем то, что, по нашему мнению, может быть утечкой сокетов в нашем приложении, которое находится в dontcore 2.1.7 на ubuntu 16.04, работающем на ВМ: у нас есть ядро ​​.Net, работающее на nginx и linux.Работает на двух разных узлах, каждый из которых имеет одинаковую кодовую базу и сбалансирован по нагрузке.Проверяется количеством вызовов на каждом сервере.

Под нагрузкой в ​​несогласованное время одно из приложений внутри узла перестает отвечать, всегда в одном и том же точном узле, перестая отвечать. Я имею в виду, что оно больше не принимаетновые соединения, и он не отвечает, пока мы не перезапустим приложение, которое очищает соединения и освобождает все ресурсы.Мы проверили, что код в обоих узлах одинаков.так что кажется, что код не проблема, а нагрузка правильно сбалансирована.Мы также дважды проверили наш файл nginx.conf, и на обеих машинах они одинаковы между узлами.Мы также проверили настройки ядра системы для соединений TCP, и они одинаковы: /etc/sysctl.conf, и мы оба они одинаковые.

/ etc / sysctl.conf Содержимое для tcp: `

    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_max_syn_backlog = 3240000
    net.core.somaxconn = 65535
    net.ipv4.tcp_max_tw_buckets = 1440000
    net.core.rmem_default = 8388608
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 87380 16777216
    net.ipv4.tcp_wmem = 4096 65536 16777216
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    net.ipv4.neigh.default.gc_thresh1 = 512
    net.ipv4.neigh.default.gc_thresh2 = 1024
    net.ipv4.neigh.default.gc_thresh3 = 2048
    net.ipv4.tcp_keepalive_time = 120```


When an app stops responding most of the connections are in ESTABLISHED state and some are in CLOSE_WAIT state
When the app is running the number of ESTABLISHED connections grow and no CLOSE_WAIT connections.

lsof command shows almost a million open files including the connections(in thousands)

Is there something else that we can be missing? 
...