Администрируем
Oracle, SQL Server, PostgreSQL

Процессы ОС Windows и соответствующие проблемы

В этой статье мы расскажем о проблемах, сопутствующих ОС Windows, и средствах диагностики этих неполадок, которые используют специалисты «ДБ-сервис».

Основные процессы ОС Windows

В актуальных версиях Windows процессы принято делить на три группы:
  • Процессы приложений. Процессы прикладных программ, как встроенных в ОС, так и внешних.
  • Фоновые процессы. Процессы, не имеющие собственных окон и протекающие непрерывно. Среди них могут быть и запущенные ОС (службы), процессы внешних программ (антивирусы, сборщики аналитики и т.д.)
  • Процессы Windows. Процессы операционной системы, отвечающие за ее функционирование.

Из-за чего возникают проблемы ОС Windows?

Существует много причин возникновения неполадок в ОС Windows. В контексте процессов, влияющих на работу СУБД, в качестве проблемы мы рассмотрим аномальное число всех процессов, а также чрезмерное количество работающих скриптов PS или командной строки.

Слишком много процессов

В норме число процессов в Windows не должно превышать 100. Если это значение достигает 1000, это может говорить о наличии неполадок или каких-то серьезных изменениях в системе. В этом случае необходимо проверить, что это за процессы.
Ниже мы подробно опишем инструменты диагностики, которые мы используем в «ДБ-сервис»; пока же отметим лишь, что т. к. процессы, выполняющиеся на машинах клиентов могут быть очень важны для их бизнеса, мы ничего не останавливаем без подтверждения от заказчиков.

Количество запущенных процессов (conhost.exe) или (powershell.exe) слишком велико

Нередки ситуации, когда источником проблемы является большое число скриптов, работающих одновременно и выполняющих разные задачи (речь идет о процессе командной строки conhost.exe или процессе powershell.exe).
Причина, как правило, кроется в том, что скрипты стали выполняться слишком долго, в силу чего висят запущенными в памяти, наслаиваясь друг на друга.
В свою очередь долгое выполнение скриптов происходит из-за неполадок на сервере или ошибок в БД, если скрипты обращаются к ней (к примеру, в случае блокировок, о которых мы писали в одной из предыдущих статей).
Первое, что необходимо сделать в этом случае — идентифицировать источник проблем. Далее необходимо проверить сервер и БД на предмет общей деградации производительности.
В случае невозможности самостоятельного проведения диагностики — следует передать данные специалистам по поддержке и администрированию баз данных, например — инженерам «ДБ-сервис». Помните, что ответ на вопрос «как запустить процесс Windows и ничего не сломать» — не всегда является тривиальным.

Как диагностировать проблему?

Существует несчетное число инструментов для диагностики проблем с процессами ОС. В этой статье мы не будем рассматривать сторонние утилиты, а сосредоточимся на только стандартных средствах Windows.

Диспетчер задач Windows (Task Manager)

Диспетчер задач — стандартный графический инструмент управления процессами. Они отображаются и управляются в двух вкладках — «Processes» и «Details» — внешний вид которых может варьироваться в зависимости от версии Windows.
1. Вкладка «Processes». Как видно на скрине ниже, в ней содержится основная информация о процессах и показатели производительности.
В этом окне диспетчера можно группировать, сортировать, добавлять и удалять отображаемую информацию, что помогает эффективнее анализировать производительность.
Как видно из скрина ниже, в этом же окне можно получить более подробные сведения о нужном процессе, перейти к исполняемому файлу, принудительно завершить процесс.
2. Вкладка «Details». Как видно из скрина ниже, в этой вкладке содержится более подробная информация о процессах.

Командная строка

Командная строка в Windows — это программа, которая эмулирует поле ввода в пользовательском интерфейсе. Для управления процессами в командной строке есть две утилиты:
  • Tasklist. Показывает список процессов на локальном или удаленном компьютере. Для каждого процесса выводит имя образа, PID, имя сессии, номер сеанса и объем занимаемой памяти.
  • Tasklist. Помогает завершить любой процесс.
Как посмотреть процессы в Windows с помощью этих утилит? По умолчанию информация выводится в виде таблицы, однако ключ /fo позволяет задать вывод в виде списка или в формате CSV, f ключ /v показывает более подробную информацию о процессах.
Например, команда Tasklist /v /fo LIST выведет подробное описание всех процессов в виде списка.
Список можно уточнить: для этого нужно использовать ключ /fi, который позволяет использовать фильтры для вывода данных. Например команда Tasklist /fi «username eq dmitry.b» /fi «memusage le 40000» выводит список процессов пользователя dmitry.b, которые потребляют не больше 40 Мб памяти.
Полную справку по командам Tasklist и Taskkill можно получить, введя их с ключом /?.

PowerShell

Еще один важный инструмент диагностики — PowerShell. Речь идет о конгломерате командлетов, с помощью можно управлять процессами на локальном или удаленном компьютере.
Для получения списка процессов используется командлет Get-Process. Пример вывода результатов можно увидеть на скриншоте ниже.
Командлет Where-Object задает фильтр для выводимой информации. Для примера выведем список процессов, которые загружают процессор и отсортируем их по возрастанию нагрузки с помощью команды: Get-Process | where {$_.cpu -gt 0} | sort cpu -Descending.
С помощью PowerShell можно получить любую информацию о любом процессе. В качестве примера возьмем процесс sqlservr и выведем список его свойств командой: Get-Process -Name sqlservr | Get-Member -Membertype property.
Затем выберем интересующие нас свойства (например, имя и ID процесса, путь к файлу, используемые модули и время запуска), после чего выедем их в виде списка командой: Get-Process -Name sqlservr | Format-List name, id, path, modules, starttime.
Как отключить процессы в Windows? Если возникла необходимость завершить процесс, сделать это в PowerShell можно с помощью командлета Stop-Process. Он завершает указанный процесс по его имени или идентификатору. Однако, т. к. мы не останавливаем процессы без подтверждения со стороны клиента, даже в данном примере мы не будем ничего отключать, а передадим результат выполнения командлета Get-Process по конвейеру: Get-Process | where {$_.name -match ″Taskmgr″} | Stop-Process.
Get-Process не может показать процессы на удаленном компьютере. Чтобы осуществить это, можно воспользоваться командлетом Get-WmiObject и, например, посмотреть процессы на удаленном компьютере командой: Get-WmiObject win32_process -computername RUDC-D-DB63 | ft name, processid, description.

Частые ошибки при диагностировании проблем

При диагностировании проблем, связанных с процессами Windows, у людей, далеких от системного администрирования, часто возникают те или иные затруднения. Поэтому, чтобы не подставлять бесперебойность вашего бизнеса под удар, мы советуем доверять диагностику профессионалам. Обратившись в «ДБ-сервис», вы получите экспертное сопровождения ваших БД, а также весь комплекс работ по их администрированию в режиме 24x7.

Резюме

Мы рассказали об основных типах процессах в ОС Windows и неполадках, возникающих из-за их аномальной работы. Также в статье было освещено, как «ДБ-сервис» использует для диагностики проблем инструменты, встроенные в оболочку Windows.

Эксперт ДБ-сервис