Системный анализ работы сайта на Falcon Space. Профилактика, диагностика работы сайта

Введение

В данной статье мы рассмотрим как проводить диагностику сайта на платформе Falcon Space.

Анализ работы сайта сводится к анализу работы базы данных SQL Server. 

В панели администратора есть средство диагностики /diag 

Пройдемся по ключевым отчетам. Эти отчеты позволяют выявить скрытые проблемы в работе сайта. 

Trace codes

Показывает статистику по trace кодам во времени. Есть возможность посмотреть последние записи по данному коду, а также удалить коды. 

Описание кодов есть в документации платформы. 

Красные числа показывают аномальные значения по сравнению с соседними числами. 

Поиск проблемных процедур SQL

Весь проект Falcon Space - это 95% работы в хранимых процедурах. Большинство проблемных мест может встретиться именно в проблемных хранимых процедурах. 

Здесь вы можете найти проблемные хранимые процедуры - по времени выполнения, по количеству чтений или записей и др. 

Также по процедуре можно посмотреть какая именно часть кода в процедуре вызывает проблемы (плюсик рядом с названием процедуры).

Поиск проблемных запросов SQL

Здесь мы ищем проблемный SQL, но уже в контексте отдельных запросов. 

Здесь есть несколько дополнительных параметров, которых нет у процедур. 

Эти таблицы позволяют найти проблемные, по различным параметрам (через сортировки): 

  • кто занимает процессор? 
  • кто выполняется очень часто? 
  • где много чтений или записей?
  • где идут записи во временную таблицу tempdb (spills)?
  • где выдается слишком большое количество строк? 

Общий анализ сайта

  • Week SP changes - отчет по изменениям хранимых процедур
  • user activity - посмотреть активность пользователей по trace 
  • falcon diagnostics - проверка базовых правил настройки основных компонентов (таблицы, формы, страницы и т.д.)
  • exceptions - таблица зафиксированных ошибок (исключений)
  • where was user - sql запрос для анализа пути посещения конкретного пользователя в нужный момент времени
  • search text in db - запрос для поиска текста по таблицам базы данных и по хранимым процедурам
  • suggestions - выводит данные из trace по предложениям на сайте (если подключена эта форма)
  • cache items - анализ состояния кеша на сайте (что хранится в памяти сервера). 

Поиск проблем по базе данных

DB State - состояние базы данных

  • Big Tables - показывает таблицы с большим количеством строк. Запросы к очень большим таблицам (>500 тысяч строк) необходимо писать особенно аккуратно. Один плохой запрос к очень большой таблице может очень негативно сказываться на всей системе. 
  • SQL Server Memory Usage - сколько потребляет в реальности памяти SQL Server. Если это значение малое, то что-то не так в настройках SQL Server (как минимум, нужно перезагрузить и следить за показателем)
  • Locks - таблица показывает существующие блокировки на базе данных. 

Search bad queries - поиск проблемных запросов

Фактически запросы выше уже решают эту задачу, но мы оставили их для дополнительного анализа 

  • SQL Plan Warnings - показ запросов с проблемами в Плане исполнения. Эти запросы можно улучшить - скопируйте их в Management studio и посмотрите план выполнения запроса. 
  • Add indexes, delete indexes - где можно добавить индексы, где можно убрать индексы (где количество записей превышает количество чтений). 
  • High CPU - запросы, где сильно нагружен CPU
  • Long Duration - запросы, которые долго выполняются
  • SQL Stress - специальный код SQL для проверки как быстро выполняется некий sql код при большом количестве итераций (например 1000 выполнений). 

Bad Events - события на сайте, которые имеет смысл изучить

  • Huge SP - запросы, которые выдали очень много строк. Если у вас есть запросы, выдающие более 1000 строк за 1 раз, то это создает большие циклы в приложении, что может нагружать процессор. 
  • DBL Request - дубли одинаковых ajax запросов. Если таких запросов слишком много с одной страницы - в базе фиксируется этот момент. 
  • Slow request - фиксация медленных ajax запросов.
  • Not found - заход на несуществующую страницу
  • No access - фиксация момента, когда пользователь запросил некий объект, но получил отказ в доступе. 

Security - диагностика проблем безопасности 

  • SP with DynSQL - ищем по SQL динамическое выполнение запросов (когда запрос выполняется не как вызов хранимой процедуры, а как выполнение запроса из сформированной строки с SQL).
  • Search XSS - ищем по процедурам возможные включения скриптов

Заключение

Периодический осмотр приложения позволяет фиксировать проблемные ситуации и решать их на ранней стадии. Если не решать возникающие проблемы, то рано или поздно они будут сказываться на работе приложения: 

  • данные в таблицах растут - необходимо оптимизировать запросы, очищать ненужные логовые данные
  • идут доработки системы, пишется новый SQL - это может порождать ошибки или новые проблемы производительности
  • злоумышленник лезет в систему - важно понять где он был, что пробовал делать
  • кто-то парсит данные сайта - можно посмотреть его IP и какие страницы он парсил
  • система иногда подвисает - нужно искать проблемный запрос, который вызывает затуп системы. 
  • почему-то уменьшилось количество регистраций или других ключевых действий - надо смотреть ошибки, события notfound. 

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

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Сайт использует Cookie. Правила конфиденциальности OK