У меня была проблема за последние несколько дней, куда каждые 10-15 минут, мой весь сервер идет небыстро реагирующий, закрывая все соединения TCP, в течение приблизительно 3 минут.
Я наконец нашел, что соединения закрываются, потому что все 16 ядер пронзают к твердым, стабильным 100% ЦП на время тех 3 минут.
Я активно пытаюсь узнать то, что истратило ЦП, однако, поскольку все на сервере полностью замораживается (даже в консоли), я не могу проверить достаточно быстро для обнаружения, каково это.
Это - очевидно, большая проблема, и я должен получить обработанный сразу же. Там некоторый путь состоит в том, чтобы зарегистрировать этот пик нагрузки ЦП и отличить его от остальной части трафика?
Единственный ответ, который я могу придумать на данный момент - это немного халтурный, но он может дать вам ответ. Во-первых, это захват процесса, вызывающего проблему. Запланируйте что-нибудь подобное, чтобы запускать каждую минуту в командном окне:
wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime
Или вы можете запланировать это и изменить командную строку, чтобы она передала его >> в файл.
Это даст вам возможность использования процессора всеми запущенными процессами. Оттуда вы можете использовать инструмент типа ProcDump (http://technet.microsoft.com/en-us/sysinternals/dd996900) для мониторинга проблемного приложения и сброса информации о нем при попадании процессора в определенный процент использованного.
Надеюсь, это немного поможет.
.Кое-что попробовать: В программе просмотра событий сделайте сохранение, как в журналах, и откройте их на другой машине, чтобы у вас было время взглянуть на них. Сделайте это, выбрав журнал, который вы хотите сохранить и выбрав действия - сохранить как. Если вы сохраните их в формате файла по умолчанию, вы можете открыть их в программе просмотра событий на другом компьютере. Думаю, даже на рабочем столе windows. Вы также можете сохранить их как .csv.
Инструкции здесь http://technet.microsoft.com/en-us/library/cc749339.aspx