Re: Socket.Close
От: AlexSorokoletov Беларусь http://sorokoletov.com
Дата: 26.06.08 08:12
Оценка:
Здравствуйте, -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 не есть правильно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.