У нас есть рабочий сервер БД на SQL 2005. Некоторое время все работает нормально, но через пару недель мы видим заметное падение производительности. Только перезапуск SQL Server возвращает производительность к норме.
Немного предыстории:
- Работает более 1200 баз данных (в основном один арендатор, несколько мультитенант). Прежде чем кто-либо читает лекции о переходе только на мультитенанта, есть веские причины для сохранения этой структуры ......
- Объем оперативной памяти составляет 16 ГБ. После перезапуска SQL Server не займет много времени, чтобы вернуться к использованию 15 ГБ.
- Количество активных соединений с БД составляет около 80 соединений - что, по нашему мнению, является вполне приемлемым, учитывая, что на каждый веб-сервер приходится один пул соединений, поэтому у нас нет проблем с утечкой соединения.
Мы попробовали несколько вещей в непиковое время: - Запустите DBCC DROPCLEANBUFFERS (с CHECKPOINT), чтобы очистить кеш данных. Это не имеет никакого эффекта и не очищает использование ОЗУ). - Запустите FREEPROCCACHE и FREESYSTEMCACHE, чтобы очистить планы запросов и сохраненный кэш процедур. Нет эффекта.
Очевидно, что перезапуск SQL Server не идеален в активной производственной среде. Мы что-то упустили. Кто-нибудь еще проходит через это?
ОБНОВЛЕНИЕ: апрель-28-2012 Все еще борется с этой проблемой. Я уменьшил объем памяти для SQL Server до 10 ГБ, просто чтобы исключить конфликты с ОС. Я становлюсь ближе к сужению, но мне нужна помощь с моего следующего шага.
Вот что я нашел после перезапуска SQL Server, файл подкачки колеблется между 12,3 ГБ и 12,5 ГБ. Это останется таким в течение многих дней. Общее количество потоков сервера будет зависать между 850 и 930 - также стабильно и согласованно в течение нескольких дней подряд (sqlserver стабильно составляет от 55 до 85 из них в зависимости от трафика).
Затем есть «событие». Я понятия не имею, что это за событие, я не вижу его в журналах, и я не вижу ничего непротиворечивого в день недели или время, когда это происходит, но весь suddent он переходит на файл 14.1 или 14.2. ГБ, и потоки переходят между 1750 и 1785.
Проверяя производительность, когда это происходит, более 900 из этих потоков являются sqlserver. Поэтому я перехожу к sp_who2, чтобы увидеть, откуда берутся эти потоки ... и есть только используемые 80 или около того соединений db.
Итак .... у кого-нибудь есть идеи, как определить местонахождение остальных 900 потоков на сервере SQL и что они делают?
ОБНОВЛЕНИЕ: июнь-01-2012 Все еще борется с проблемой. Для тех, кто читает это все еще, проблема с подпрыгивающими нитями была решена. Это было вызвано автоматическим программным обеспечением для резервного копирования ComVault. Он создавал поток, пытаясь создать резервную копию баз данных, которых больше не было (он поддерживал список предыдущих баз данных), а не просто создавал резервные копии текущих баз данных.
Но проблема остается, и мы должны перезагружать каждую неделю, давать или брать несколько дней. Работаем с командой Rackspace, чтобы узнать, смогут ли они пролить свет.