Высокая память сервера и процессор - не ведет
Меня попросили устранить неполадки на сервере, на котором размещено наше приложение на объекте клиента.
Клиент жаловался нам два раза за последнюю неделю - полторы недели. В одном случае они утверждали, что память сервера была "исчерпана", а в другом случае они утверждали, что процессор был "исчерпан". В обоих случаях наше приложение стало непригодным для использования, и клиент был вынужден перезагрузить сервер.
Спецификации сервера следующие:
System Manufacturer Dell Inc.
System Model PowerEdge R320
System Type x64-based PC
Processor Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz, 2200 Mhz, 6 Core(s), 12 Logical Processor(s) - Hyperthreading-enabled???
OS Name Microsoft Windows Server 2008 R2 Standard
Version 6.1.7601 Service Pack 1 Build 7601
Installed Physical Memory (RAM) 32.0 GB
Total Physical Memory 32.0 GB
Available Physical Memory 26.1 GB
Total Virtual Memory 41.7 GB
Available Virtual Memory 34.9 GB
Page File Space 9.77 GB
Page File C:\pagefile.sys
Наше приложение работает на Microsoft SQL Server 2012 (11.0.2100.60 (X64) - Standard Edition), IIS 7.5, a handful of proprietary Windows Services applications
- они все на одном сервере.
В последнее время производительность приложения стала более стабильной и приемлемой. Но я чувствую, что это только вопрос времени, когда здоровье этого сервера снова ухудшится.
Меня попросили расследовать эти предыдущие случаи. Но мне кажется, мне не о чем продолжать.
Средство просмотра событий Windows содержит некоторые записи, подтверждающие их утверждения о нехватке памяти. Было 12 из этих записей, последовательно перечисленных в программе просмотра событий в течение часа.
A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 221384, committed (KB): 434308, memory utilization: 50%.
В целях упреждающего действия и подготовки к другому возможному отключению я включил ведение журнала PerfMon в файл csv на сервере, который включает следующие счетчики:
- Память \ Доступные МБайт
- Память \Pages/ сек
- Память \% зафиксированных использованных байтов
- Файл подкачки (\??\C:\pagefile.sys)\% использования
- PhysicalDisk(*)\ Среднее. Диск с / Чтение
- PhysicalDisk(*)\ Среднее. Disk sec / Write
- PhysicalDisk(*)\ чтения с диска / сек
- Физический диск (*) \ Запись на диск / сек
- Система \ Длина очереди процессора
- SQLServer:Buffer Manager\ Ожидаемая продолжительность жизни страницы
- SQLServer: Общая статистика \ Пользовательские подключения
- SQLServer: диспетчер памяти \ ожидающие предоставления памяти
- SQLServer: статистика SQL \ Пакетные запросы / сек
- SQLServer: статистика SQL \ компиляции SQL / сек
- SQLServer: статистика SQL \ перекомпиляции SQL / сек
- Процессор (_Total)\% процессорного времени
- Система \ Переключение контекста / сек
- Система \ Процессы
- Process(x)\% времени процессора (где x находится в (sqlservr, w3wp и т. Д.))
Я также настроил некоторые базовые оповещения по электронной почте в агенте SQL Server для уровней серьезности: 17-25 и для пары конкретных идентификаторов ошибок.
(1) Что еще я должен отслеживать / отслеживать / делать, чтобы я был лучше подготовлен к следующей аварии? Я хотел бы получить достаточно данных для отслеживания событий, которые привели к аварии.
(2) Мы знаем, что была нехватка памяти, основанная на записи средства просмотра событий Windows, но после просмотра данных PerfMon, которые я собирал до сих пор, выделяется пара вещей, которые могут указывать на проблемы с процессором, но я не совсем уверен. Кажется ли следующее слишком высоким для комфорта? Шипы> 50 волнуют меня, хотя они не на длительный период
За Processor Queue Length
:
Average = 0.5
Median = 0
Min = 0
Max = 89
Std Deviation = 3.07
1 ответ
Войдите в SQL Server Management Studio, щелкните правой кнопкой мыши свой экземпляр и выберите Свойства> Память. По умолчанию SQL Server 2012 Standard устанавливает максимальный объем памяти сервера, равный 2147483647 МБ. Я бы установил максимальный объем памяти сервера для SQL Server примерно 8192 МБ (или менее 32 ГБ).
Вместо того, чтобы использовать PerfMon, возможно, вы можете использовать SQL Server Profiler в разделе Инструменты в SQL Server Management Studio. Это будет ресурсоемким, но вы можете получить гораздо лучшее представление о том, что происходит в приложении, что может вызвать скачок использования процессора или памяти.