Здравствуйте, -Cheese-, Вы писали:
C>Всем привет.
C>Имеется самописный сервер на Socket-ах работающий в режиме C>ацептим клиента — получаем запрос — отвечаем — дисконектим C>Нагрузка достаточно приличная (в пик работы около 10-20 запросов в секунду).
C>Если смотреть через таскменеджер, то видно что для этого приложения постоянно увеличивается количество Handles. C>За пару дней работы — около 10000 и эта цифра вечно растёт. Утечка какая-то что ли.....
C>Начал разбираться с причиной... думал где-то не закрываю сокеты (хотя столько активных сокетов в винде и не создашь). C>После проверки выяснилось, что всё ок., всё во всех случаях закрывается. C>Даже поставил счётчик при открывании и при закрывании и наблюдал за значениями — всё ок (т.е количество Socket.Close равно количеству заасептченых клиентов). C>Для каждого коннекта создаются пару калассов, но они все после дисконнекта диспозятся.
C>Почему может возникать такая проблема или это нормальное поведение?
Советую обратить внимание на правильную обработку исключений и вообще паттерны правильной работы с сокетами.
У нас была утечка памяти из-за того, что мы неправильно работали с WCF-сервисами.
Хотя использовали мы их в using(Client c = new Client()){...}, оказывается, сие для WCF не есть правильно.