Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf
Добавлен: 29.10.2018
Просмотров: 33205
Скачиваний: 742

Зависание и плохая производительность
Глава 17 413
Открыв журнал, первым делом я отфильтровал события, относящиеся к
StockViewer.exe, найдя его первую операцию и щелкнув ее правой кнопкой,
чтобы быстро установить фильтр (рис. 17-11).
Рис. 17-11. Установка фильтра для StockView.exe
Затем я просмотрел временные отметки первого (2:27:20) и последнего
(2:28:32) элементов, что соответствовало минутной задержке, о которой пи-
сал Джейсон. В результатах трассировки я увидел много ссылок на крипто-
графические разделы реестра и папки файловой системы, а также ссылки на
параметры TCP/IP, но я знал, что должен быть минимум один промежуток,
соответствующий длительной задержке. Я просмотрел журнал с начала и
обнаружил промежуток примерно в 10 секунд (рис. 17-12).
Рис. 17-12. 10-секундный промежуток между событиями StockViewer
Рис. 17-13. 12-секундный промежуток между событиями StockViewer
Непосредственно перед этим были ссылки на библиотеку Rasadhlp.dll,
связанную с работой в сети, немного раньше — много обращений к разделам
реестра Winsock, а сразу после задержки — обращения к криптографическим
разделам реестра. Похоже, что компьютер не была подключен к Интернету,
SIN_ch_17.indd 413
27.12.2011 14:41:25

414 Часть
III
Поиск и устранение сбоев: загадочные случаи
и приложение ждало истечения таймаута какого-то сетевого компонента
около 10 секунд. Я продолжил просмотр и нашел 12-секундный интервал
(рис. 17-13).
Перед этим промежутком снова была сетевая активность и «криптографи-
ческая» после. Следующий промежуток тоже длился 12 секунд (рис. 17-14).
Рис. 17-14. Еще один 12-секундный промежуток между событиями
Следующие несколько промежутков были практически идентичными.
В каждом случае непосредственно перед паузой было обращение к HKCU\
Software\Microsoft\Windows\CurrentVersion\ lnternet Settings\Connections,
поэтому я установил фильтр для этого пути и для операции RegOpenKey и,
конечно же, нашел пять промежутков по 12 секунд каждый (рис. 17-15).
{
{
{
{
{
Рис. 17-15. Пять 12-секундных промежутков
В сумме эти промежутки (5 по 12) давали задержку, возникающую у
Джейсона. Теперь я хотел убедиться, что повторные попытки доступа к
сети были вызваны проверкой подписи, так что я стал просматривать сте-
ки вызовов различных событий, выбирая их и нажимая Ctrl+K для вызова
окна свойств стека. Стек событий, относящихся к параметрам подключе-
ния к Интернету, показал, что причиной были криптографические функции
(рис. 17-16).
Рис. 17-16. Стек вызовов показал причастность криптографических операций
SIN_ch_17.indd 414
27.12.2011 14:41:26

Зависание и плохая производительность
Глава 17 415
Наконец, я хотел убедиться, что эти проверки были вызваны средой
.NET. Я еще раз просмотрел журнал и увидел события, подтверждающие,
что StockViewer — приложение .NET (рис. 17-17).
Рис. 17-17. Доказательство причастности .NET
Также я просмотрел стеки некоторых предшествующих событий, ссыла-
ющихся на «криптографические» разделы реестра, и увидел, что исполняю-
щая среда .NET вызывала WinVerifyTrust — функцию Windows для проверки
цифровой подписи файла, запускающую серию попыток выхода в Интернет
(рис. 17-18).
Рис. 17-18. Вызов
WinVerifyTrust из .NET Framework
Теперь я точно знал причину задержки: среда .NET обнаруживала, что
файл Stockviewer.exe имеет цифровую подпись, и пыталась проверить, не
отозван ли сертификат. Я стал искать в Интернете способ пропустить эту
проверку .NET, потому что знал, что компьютеры на конференции, скорее
всего, не будут подключены к Интернету во время нашего выступления.
Через несколько минут поиска я нашел статью Knowledge Base 936707 «FIX:
A .NET Framework 2.0 managed application that has an Authenticode signature
takes longer than usual to start» («Исправление: управляемое приложение
.NET Framework 2.0, имеющее подпись Authenticode, запускается дольше
обычного») (http://support.microsoft.com/kb/936707). В этой статье описыва-
лись точно те же симптомы, что и у нас, и говорилось, что .NET 2.0 (а, судя по
путям к библиотекам DLL, указанным в данных трассировки, в StockViewer
использовалась именно эта версия) поддерживает способ отключения обя-
зательной проверки цифровых подписей сборок. Для этого нужно создать
в папке исполняемого файла файл конфигурации с тем же именем, что и у
SIN_ch_17.indd 415
27.12.2011 14:41:27

416 Часть
III
Поиск и устранение сбоев: загадочные случаи
исполняемого файла, но с расширением .config (например, StockViewer.exe.
config), содержащий следующий код XML:
<?xml version=»1.0» encoding=»utf-8»?>
<configuration>
<runtime>
<generatePublisherEvidence enabled=»false»/>
</runtime>
</configuration>
Примерно через 15 минут после получения письма от Джейсона я отпра-
вил ему ответ с объяснением и файлом конфигурации. Вскоре после этого
он написал, что задержки исчезли, и выразил удивление тем, как быстро я
решил проблему. Для него это казалось чем-то вроде магии, но я просто ис-
пользовал базовые приемы решения проблем с использованием Procmon и
Интернета. И, конечно, демонстрация прошла на ура.
Случай с медленным открытием файлов Project
Все началось, когда клиент, сетевой администратор, обратился в службу
поддержки Microsoft с жалобой пользователя на то, что файлы Microsoft
Project, расположенные в общей папке в сети, открываются около минуты, и
часто появляется ошибка, показанная на рис. 17-19.
Рис. 17-19. Ошибка, возникающая при открытии файлов Project
Администратор убедился в наличии такой проблемы, проверил параме-
тры сети и задержки на файловом сервере, но не смог обнаружить ничего,
что объясняло бы происходящее. Инженер службы поддержки попросил
сделать трассировку Procmon и Network Monitor при открытии проблемно-
го файла. После получения данных он открыл журнал Procmon и установил
фильтр, включающий только операции процесса Project, и еще один фильтр,
включающий пути, ссылающиеся на целевую общую папку. В столбце File
Time (Время файла) диалогового окна File Summary (Сводка по файлам),
открытого из меню Tools (Сервис), было показано, что на обращение к фай-
лам из общей папки тратится много времени (рис. 17-20).
Пути из данных трассировки показывали, что профили пользователей
хранились на файловом сервере, и запуск Project приводил к активному об-
ращению к каталогу AppData профиля. Если многие пользователи хранили
свои профили на одном сервере, используя перенаправление папок, и за-
пускали одинаковые приложения, хранящие данные в папке AppData, это,
SIN_ch_17.indd 416
27.12.2011 14:41:28

Зависание и плохая производительность
Глава 17 417
определенно, приводило к некоторой задержке. Давно известно, что перена-
правление каталога AppData может приводить к ухудшению производитель-
ности, поэтому первая инструкция инженера службы поддержки была сле-
дующей: настроить перемещаемые профили пользователей так, чтобы папка
AppData не перенаправлялась и синхронизировалась только при входе и вы-
ходе из системы, в соответствии с рекомендациями из блога Microsoft
2
:
Особые соображения насчет папки AppData\Roaming:
Если папка AppData\Roaming перенаправляется, производительность не-
которых приложений может ухудшаться, так как они будут обращаться к
этой папке по сети. В таком случае рекомендуется настроить следующий
параметр групповой политики для синхронизации папки AppData\Roaming
только при входе и выходе из системы и использования локального кеша во
время сеанса работы пользователя. Это может замедлить вход и выход из
системы, но приложение будет работать быстрее, поскольку не будет ожи-
дать ответа из сети:
User configuration > Administrative Templates > System > User Profiles > се-
тевые_папки > настройка для синхронизации только при входе и выходе.
Если проблемы с приложениями остаются, следует отменить перена-
правление AppData. Недостатком этого метода может быть замедление
входа и выхода из системы.
Рис. 17-20. Окно File Summary показывает, что на операции с файлами тратится много
времени (имя домена скрыто)
Затем инженер проверил, генерирует ли Project весь трафик к таким
файлам, как Global.MPT, или это связано с дополнениями. Для этого по-
надобились данные трассировки стеков. Установив фильтр, отображаю-
щий только обращения к Global.MPT (файлу с наибольшим временем
ввода-вывода, как видно из окна сводки), он заметил, что тот открывался
и читался несколько раз. Сначала он увидел пять или шесть длительных
серий из коротких случайных операций чтения (рис. 17-21).
2
«Профили пользователей служб удаленного рабочего стола Windows Server 2008 R2», http://
blogs.msdn.com/b/rds/archive/2009/06/02/user-profiles-on-windows-server-2008-r2-remote-desktop-
services.aspx
SIN_ch_17.indd 417
27.12.2011 14:41:28