![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Утечка ресурсов
EgorovAlex © (2007-12-05 21:30:00)Есть такая ситуация - работает сервис на сервере очень долго, и через какое-то время этот сервер перестаёт пускать к себе терминальных клиентов. После перезагрузки моего сервиса ситуация исправляется до следующего раза. В чём может быть причина? Оперативки на этот момент свободной много - больше двух гигов, хендлов открытых не больше 2000, потоков меньше 200. Даже не знаю куда копать :(
DVM (2007-12-06 15:09:00) [1]
> А что это - "закрытые хендлы"?
это типа дырок от бубликов
EgorovAlex (2007-12-06 14:49:00) [2]А что это - "закрытые хендлы"?
Система четырёхпроцессорная, 4 гига памяти
Slym (2007-12-06 14:21:00) [3]Slym © (06.12.07 14:19) [17]
А дедлок думаю в доступе к реестру, т.к. замечался на этапе логона Nого пользователя или при интенсивном юзании
Slym (2007-12-06 14:19:00) [4]У меня токое было на сервере терминалов.... работает а потом колом встает. Память, хендлы все счетчики в норме, даже ЦПУ 1%, но всеравно колом...
Думаю система уходит в дедлок где-то, система однопроцессорная, на многопроцессорной все в норме
Slym (2007-12-06 14:15:00) [5]Eraser © (06.12.07 11:44) [15]
хендлов открытых не больше 2000... зато закрытых может быть 65536 :)
Eraser (2007-12-06 11:44:00) [6]
> Slym © (06.12.07 05:10) [13]
там нельзя посмотреть какой именно тип дескрипторов не освобождается.
Slym (2007-12-06 09:06:00) [7]Сколько процессоров на сервере?
В журнале сообщения какие?
"Реестр пользователя Domain\user был сохранен в то время, как приложение или служба продолжали использовать его во время выхода из системы..."
Slym (2007-12-06 05:10:00) [8]В диспетчере задач Вид-Выбрать столбцы... поставь:
Объем виртуальной памяти.
Счетчик дескрипторов.
Счетчик потоков.
Этого хватит для диагнистики
EgorovAlex (2007-12-06 00:09:00) [9]Да, процесс эксрлорер - сила, может кто знает, как он выдирает из процесса инфу о незакрытых хендлах?
Раньше Руссинович хоть иногда отвечал, пока его мелкомягкие не купили, а теперь - тишина...
Eraser (2007-12-05 23:26:00) [10]в process explorer'e еще можно глянуть, там сразу будет видно если какой-то тип ресурсов "утекает" ) разве что утечки памяти не выявишь особо.
Rouse_ (2007-12-05 22:41:00) [11]
> Он, насколько я понимаю, не покажет незакрытых хэндлов
А для этого другие инструменты есть, VTune тот-же :) Если человек не работает напрямую с АПИ, то FastMM покажет все, а если работает - значит плохо это реализует :)
EgorovAlex (2007-12-05 22:30:00) [12]По памяти я гоняю EurekaLog - помогает, хоть и триальный, а вот по хендлам рекомендуют AQTime, но он дороговат...
DVM (2007-12-05 22:23:00) [13]
> Rouse_ © (05.12.07 22:21) [7]
Он не все утечки покажет. Он, насколько я понимаю, не покажет незакрытых хэндлов и т.д. а покажет неудаленные объекты и выделенную и неосвобожденную память.
Rouse_ (2007-12-05 22:21:00) [14]Поставь себе для начала FastMM4 и включи протоколирование. Он тебе сразу кажет утечки.
DVM (2007-12-05 22:06:00) [15]
> Так а что логить?
Выделение и освобождение ресурсов вероятно. Но для начала неплохо бы все же выяснить, что за ресурсы утекают. Выяснить можно с пом MemProof и Process Explorer.
EgorovAlex (2007-12-05 22:00:00) [16]Так а что логить? Сетевые функции - создание, удаление пайпов или всё продряд? Программа слишком большая, чтобы очень много логировать.
DVM (2007-12-05 21:56:00) [17]
> может из-за них?
Может быть из за чего угодно. Скорее всего исчерпывается количество каких-либо свободных ресурсов. Логи и еще раз логи.
EgorovAlex (2007-12-05 21:48:00) [18]Сокетов нет, есть именованные каналы - может из-за них?
DVM (2007-12-05 21:44:00) [19]В принципе проблема решается ведением логов работы. Протоколируй в файл(файлы) результаты вызовов сетевых функций, по логам найдешь вероятное место ошибки.
DVM (2007-12-05 21:42:00) [20]
> Даже не знаю куда копать :(
серевер сокеты закрывать не забывает?