Возможно я плохо искал, но точно такой проблемы поиском пока не нашёл.
Есть достаточно большое корпоративное приложение на C#. Пока в нём активно работают, всё идёт хорошо. Однако, стоит юзеру отойти от рабочего места минут на 10-15, оставив на экране приложение, как оно перестаёт отвечать на действия пользователя, становясь, усилиями Windows "белым". Если не снимать задачу, а подождать секунд 20-30, всё размерзает и продолжает работать нормально. Никаких фоновых потоков, циклов и таймеров не работает. Пока грешу на автоматическую уборку мусора при отсутствии действий пользователя.
Кто-нибудь сталкивался с таким делом, и куда копать чтобы это победить? А то юзеры жалуется постоянно, и снимают задачу.
Здравствуйте, Serg65535, Вы писали:
S>Есть достаточно большое корпоративное приложение на C#. Пока в нём активно работают, всё идёт хорошо. Однако, стоит юзеру отойти от рабочего места минут на 10-15, оставив на экране приложение, как оно перестаёт отвечать на действия пользователя, становясь, усилиями Windows "белым". Если не снимать задачу, а подождать секунд 20-30, всё размерзает и продолжает работать нормально. Никаких фоновых потоков, циклов и таймеров не работает.
>Пока грешу на автоматическую уборку мусора при отсутствии действий пользователя.
Вряд ли. Сборка мусора не зависит от действий пользователя.
S>Кто-нибудь сталкивался с таким делом, и куда копать чтобы это победить? А то юзеры жалуется постоянно, и снимают задачу.
Впечатление такое, что страницы процесса были выгружены в своп и сейчас идет их подкачка из свопа. Вообще-то это нормальный процесс, это верно для любых приложений, но не на 20-30 секунд. Такое время может быть только если процесс уж очень активно потребляет память.
Запусти Task Manager и посмотри, сколько процентов времени CPU занимает этот процесс во время "размораживания". Также посмотри его дисковую активность, как уже отметил adontz. И еще посмотри потребности по памяти (Memory — Working Set, Memory — Commit Size) a) в момент ухода юзера и b)в момент его возвращения.
Еще одна гипотеза. Не переходит ли банально компьютер в спящий режим после 10-15 минут отсутствия юзера ? Попробуй запретить ему это и посмотри , что будет.
Здравствуйте, Kalina9001, Вы писали:
K>Винт заводится?
Это первое, что проверяли — машины работают на полную катушку, никаких уходов в энергосбережение, никаких отключений винтов.
Более того, юзеры даже не отходят порой, а просто работают в чём-то другом, наше приложение просто не активно. Видимо, Windows его очень уж глубоко убирает в своп так, что оно потом крайне медленно оживает.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Впечатление такое, что страницы процесса были выгружены в своп и сейчас идет их подкачка из свопа. Вообще-то это нормальный процесс, это верно для любых приложений, но не на 20-30 секунд. Такое время может быть только если процесс уж очень активно потребляет память.
Очень на то похоже. Среднее потребление памяти процессом по таскменеджеру — 60-70 Мб. Для сравнения, любой файрфокс на той же машине может занимать в 4-5 раз больше и никуда не виснит даже при половине дня свёрнутого состояния.
PD>Запусти Task Manager и посмотри, сколько процентов времени CPU занимает этот процесс во время "размораживания". Также посмотри его дисковую активность, как уже отметил adontz. И еще посмотри потребности по памяти (Memory — Working Set, Memory — Commit Size) a) в момент ухода юзера и b)в момент его возвращения.
Спасибо за наводки — занялся тестами. Штука трудно уловимая, не 100% бывает, поэтому буду её ловить.
PD>Еще одна гипотеза. Не переходит ли банально компьютер в спящий режим после 10-15 минут отсутствия юзера ? Попробуй запретить ему это и посмотри , что будет.
Нет, это абсолютно точно. Народ даже иногда продолжает работать в других программах, наше приложение просто свёрнуто.
Полное ощущение, что Windows его засовывает глубоко в своп и очень долго оттуда достаёт потом, несмотря на то, что машины достаточно современные.
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, Serg65535, Вы писали:
A>А у вас не WPF?
Кстати, наблюдаю похожие спецэффекты в ILSpy: после нескольких часов неактивности приложение долго и неохотно просыпается, окно в это время покрыто "белым саваном". Подкачка отключена, четырехядерный процессор бездействует.
Здравствуйте, hardcase, Вы писали:
A>>А у вас не WPF? H>Кстати, наблюдаю похожие спецэффекты в ILSpy: после нескольких часов неактивности приложение долго и неохотно просыпается, окно в это время покрыто "белым саваном". Подкачка отключена, четырехядерный процессор бездействует.
Ну так всякое WPF'ное барахло из видеопамяти выгружается, она ведь тоже не резиновая.