Глобальный подход
- Здесь описан мой подход
- Bitrix24 + BitrixEnv + CentOS → это сложная система, поэтому имеет смысл полностью ее контролировать.
- Имеет смысл найти не только найти причину долгой загрузки конкретной карчточки, то и иметь полное представление и тщательный контроль за всеми элементами этой системы.
- В этой системе идет ежедневное накопление данных.
- Количественные изменения могут приводить к качественным изменениям, поэтому в любой момент может произойти нежелательное событие, которое может привести к замедлению или даже к остановке системы.
- Эта система имеет много параметров, поэтому нужно собирать значения этих параметров и где-то сохранять, что бы имелись данные для нормального состояния, что бы можно было потом сравнить данные нежелательного состояния с данными нормального состояния
- Иммет смысл сравнивать параметры текущей медленной системы с данными чистой системы (можно временно создать VDS с такими же параметрам и установить чистую B24)
- Контролировать нужно после каждого обновления платформы. У меня есть специальная 1С-обработка, которая позволяет выявлять новые, изменненны и удаленные файлы от верси к версии.
- Эта же обработка позволяет в наглядной форме увидеть разницу в коде у двух файлов - из старой версии и из новой
- Кнопочки в Б24 бывают только двух типов:
- Обычная: Кнопочка запрашивает весь ресурс. Сразу видна ссылка
- Ajax: на кнопке ссылка не видна. На кнопке висит JS-обработчик
FrontEnd
- Если на кнопке висит обработчик, тогда нужно найти этот обработчик и вначале этого обработчика добавить js-скриптик, который будет записывать время начала скрипта в глобальную переменную
- Потом нужно найти конеч скрипта-обработчика и перед самой отправкой на сервер добавить JS-скриптик, который определить время и запишет его в глобальную переменную
- В глобальной js-переменной есть время начала выполнения скрипта и время окончания выполнения скрипта
- Можно будет вывести время работы скрипта
WireShark
BackEnd
xDebug
- Одна из функций этой штуковины - это проследить последовательность функций, которые выполняются с момента поступления http-запроса на веб-сервер и отдачи его клиенту
- Тут имеется в виду, что система записывает время выполнения каждой функции, что позволяет найти "узкое горлышко"
- Она уже включена в BitrixEnv, но она выключена, так как во включенном состоянии очень тормозит сервер
- Ниже представлена 1С-обработка по анализу данных из xDebug:
Раздел "Производительность" или модуль "perfom"
- Данные отсюда нужно только использовать в качестве элемента общей картины
- Ниже представлена таблица, которую я делал, когда думал на чем устанавливать мой "i-love-bx.ru" - его я пробовал установить на собственной сборке и на BitrixEnv и сравнивал данные:
| # |
Сайт |
Конфи- гура- ция |
Среднее время отклика |
Процессор (CPU) |
Файловая система |
Почтовая система |
Время старта сессии |
База данных MySQL (запись) |
База данных MySQL (чтение) |
База данных MySQL (изменение) |
VDS |
Ядра |
Память |
Цена |
OS |
Тип |
Комментарий |
| 0 |
Эталон |
30.00 |
0.0330 |
9.0 |
10'000.0 |
0.0100 |
0.0002 |
5'600 |
7'800 |
5'800 |
|
|
|
|
|
|
|
| 1 |
----x.ru |
45.52 |
0.0217 |
151.8 |
9'495.2 |
0.0111 |
0.0001 |
6'399 |
15'070 |
5'909 |
Paris |
2 |
1 |
360.86 |
CentOS |
BitrixEnv |
Бизнес |
| 2 |
----3d.ru |
22.81 |
0.0438 |
166.6 |
11'673.2 |
0.0273 |
0.0001 |
768 |
6'845 |
4'962 |
Liverpool |
2 |
1 |
360.86 |
Ubuntu |
LEMP |
Бизнес |
| 3 |
----fe.ru |
39.35 |
0.0254 |
154.9 |
10'190.7 |
0.0150 |
0.0002 |
7'180 |
13'557 |
6'786 |
Berlin |
2 |
2 |
721.94 |
|
|
М-Бизнес |
| 4 |
---ing.ru |
28.31 |
0.0353 |
116.6 |
6'275.5 |
0.0232 |
0.0007 |
1'286 |
12'115 |
4'393 |
London |
2 |
2 |
807.62 |
|
|
Бизнес |
| 5 |
i-love-bx.ru |
59.80 |
0.0167 |
114.1 |
6'315.0 |
0.0164 |
0.0007 |
6'712 |
13'123 |
6'382 |
London |
2 |
2 |
807.62 |
|
|
Стандарт |
| 6 |
bitrixlabs.ru |
3.18 |
0.3140 |
66.5 |
10 270.8 |
0.0192 |
0.0001 |
3'428 |
6'993 |
3'842 |
|
|
|
|
|
|
|
| 7 |
---le.ru |
51.66 |
0.0194 |
345.9 |
12'537.5 |
0.0424 |
0.0001 |
28'541 |
33'107 |
27'828 |
|
|
|
|
|
|
|
| 8 |
185.93.111.82 |
23.69 |
0.0422 |
163.5 |
8'917.3 |
0.0349 |
0.0001 |
651 |
6'165 |
3'195 |
Moscow |
2 |
1 |
360.86 |
Ubuntu |
LEMP |
Бизнес |
| 9 |
185.93.111.82 |
68.03 |
0.0147 |
177.5 |
8'830.4 |
0.0195 |
0.0007 |
1'149 |
6'127 |
5'635 |
Moscow |
2 |
1 |
360.86 |
Ubuntu |
LEMP |
Стандарт |
| 10 |
185.93.111.82 |
32.11 |
0.0311 |
179.5 |
9'467.1 |
0.0232 |
0.0002 |
2'139 |
7'189 |
1'527 |
Moscow |
2 |
1 |
360.86 |
Ubuntu |
Percona 5.7 |
Бизнес |
Логгирование в Битриксе
- База данных редакции "1С-Битрикс24: Интернет-магазин + CRM" состоит из 1'264-х таблиц
- Среди них находится 48 таблиц, которые посвящены логам
- Их нужно поставить под контроль
- В 1С можно сделать таблицу, которая показывает сколько записей в каждой log-таблице
- Можно сделать просмотр их и увидеть, возможно в какой-то log-таблице появляется сообшение об ошибке
- Можно сделать систему, которая будет записывать количество записей в них и тогда можно увидеть, что добавляются ли записи в log-таблицы каждый день.
- Можно сделать так, что бы эти log-таблицы добавлялись только сообщения об ошибках и таким образом каждый день смотреть - не появились ли ошибки
- Если появлись ошибки, то можно сделать так, что об этом сообщит чат-робот в телеграмме или чат-робот в Б24
- Ниже указаны конкретные таблицы логов
Ниже указано сколько log-таблиц находится в каком модуле
Логгирование в операционной системе
- Линуксовые операционные системы устроены так, что каждое приложение может иметь логи
- Включаются и выключаются они в настройках
- Логи состоят из строк. Строки состоят из полей. Состав полей логов у разных приложений разный.
- В 1С у меня есть обработка, которая позволяет расшифровывать логи и фильтровать логи по разным полям.
- Это позволяет проще анализировать логи.
- По моему опыту c с помощью 1С нужно как минимум контролировать следующие логи:
- /var/log/cron
- /var/log/dmesg
- /var/log/messages
- /var/log/mysql/error.log
- /var/log/mysql/slow.log
- /var/log/nginx/error.log
- /var/log/httpd/error_log
- /var/log/firewalld
- /var/log/secure
- Ниже представлен содержимое каталога, в котором больше всего логов
- Логи храняться еще и в других каталогах
- Место расположения логов задается в настройках приложения
- Логи можно выстаскивать в 1С и там анализировать.
Мониторинг операционной системы с помощью внешних утилит
- В BitrixEnv уже встроены две системы: Munin и Nagios
- Для того, что бы с них получать данные, нужно создать еще одну VDS и там установить одни их них.
- В результате можно будет в виде графиков контролировать некоторые важные параметы
Мониторинг операционной системы с помощью внутренних утилит
- Вот список команд для мониторинга:
- apachetop
- atop
- free
- htop
- iostat
- innotop
- netstat
- ps
- pstree
- top
- vmstat
Инструменты исправления
- Пока не найдена причина торможение, то об инструментах можно говорить только примерно
- Вот примерный перечень возможных инструментов:
- Оптимизация SQL-запросов в Битриксе (это особенно актуально, если в системе используются пользовательские поля)
- Тонкая настройка NGINX
- Тонкая настройка APPACHE
- Тонкая настройка MySQL
- Рекомендации по настройке есть в самом Битриксе
- В природе сущестсвуют отдельные приложения, которые позволяют проверить оптимальность настроек MySQL-сервера при текущай загрузке.
- Левый запросы внутри FontEnd на сторонние сервисы
- Процедуры, которые выполняются на кроне
- Удаление ненужных данных. В случае необходимости удаленные данных можно где-нибудь сохранять.
- Включение и настройка "Memcached" в "BitrixEnv"
С чего начать?