Системный анализ работы сайта на 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

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы