- Совместимость с XenForo
- 2.2.x 2.3.x
- Русификатор
- Нет
[FX] Session Mod обеспечивает высокопроизводительное автоматическое восстановление, оптимизацию таблиц и управление активностью сессий без простоев для XenForo 2.2+ и 2.3+. Он защищает ваше сообщество от блокировки базы данных, ошибок переполнения памяти и сбоев таблиц, не требуя ручного вмешательства в работу сервера.
В XenForo таблица xf_session_activity регистрирует активных участников, гостей и поисковых роботов, просматривающих ваш форум в режиме реального времени. Эта таблица обновляется и запрашивается практически при каждом HTTP-запросе.
Из-за такой непрерывной высокоинтенсивной работы администраторы XenForo часто сталкиваются с катастрофическими проблемами в работе базы данных, из-за которых весь форум оказывается недоступен:
Перейдите в Admin CP > Настройка > Параметры > [FX] Session Mod (admin.php?options/groups/fxSessionMod/):
php cmd.php xf:addon-install FX/SessionMod
В XenForo таблица xf_session_activity регистрирует активных участников, гостей и поисковых роботов, просматривающих ваш форум в режиме реального времени. Эта таблица обновляется и запрашивается практически при каждом HTTP-запросе.
Из-за такой непрерывной высокоинтенсивной работы администраторы XenForo часто сталкиваются с катастрофическими проблемами в работе базы данных, из-за которых весь форум оказывается недоступен:
- Ошибка MySQL [1114]: таблица xf_session_activity заполнена:
- При использовании механизма MEMORY (HEAP) размер таблицы строго ограничен параметрами MySQL max_heap_table_size и tmp_table_size (обычно 16 МБ или 32 МБ).
- Во время резких скачков трафика, агрессивного сканирования поисковыми роботами (Google, Bing, Ahrefs, Yandex) или DDoS-атак таблица быстро заполняется.
- Последствия: посетители и участники получают сообщение «Произошла непредвиденная ошибка базы данных» на белом экране. Вся система выходит из строя, и администраторы не могут получить доступ к панели управления без SSH или phpMyAdmin, чтобы вручную выполнить команду TRUNCATE TABLE.
- Повреждение таблиц и ошибки сбоя ([145] Таблица помечена как поврежденная и требует восстановления):
- Перебои в подаче электроэнергии на сервер, неожиданные перезапуски MySQL или состояния гонки при высокой нагрузке могут привести к повреждению индексных структур таблиц MyISAM или MEMORY.
- Взаимные блокировки и тайм-ауты ожидания блокировки ([1205], [1213]):
- Параллельные обновления и рутинные операции очистки могут приводить к взаимной блокировке строк при высокой нагрузке на запись.
- Обнаружение сигнатур с несколькими кодами:
- Автоматически определяет исключения базы данных, нацеленные на xf_session_activity:
- 1114 - ER_RECORD_FILE_FULL (Таблица заполнена)
- 145, 1194, 1034, 1016, 1030, 126, 127 ( Таблица помечена как аварийно завершенная / поврежденная)
- 1205, 1213 (Время ожидания блокировки / взаимоблокировка)
- 1062 (Дублирующая запись для ОСНОВНОГО ключа)
- Автоматически определяет исключения базы данных, нацеленные на xf_session_activity:
- Многоэтапное выполнение восстановления:
- Этап 1: Выполняет УСЕЧЕНИЕ таблицы xf_session_activity, чтобы мгновенно освободить оперативную память или дисковое хранилище.
- Этап 2: если таблица повреждена, перед усечением автоматически выполняется команда REPAIR TABLE / OPTIMIZE TABLE.
- Этап 3: если разрешения на усечение DDL ограничены, выполняется команда DELETE FROM xf_session_activity.
- Прозрачная автоматическая повторная попытка: автоматическая повторная попытка выполнения исходного запроса сразу после восстановления. Посетители никогда не видят страницу с ошибкой.
- Записи об активности в сеансе представляют собой временное состояние просмотра («Кто просматривает эту тему»). Они содержат ноль критически важных транзакционных данных (аутентификация пользователя надежно изолирована в xf_session).
- Если аппаратное обеспечение сервера или диск продолжают работать со сбоями, механизм проглатывания ошибок предотвращает распространение исключения. Ваш форум остается доступным на 100 % без фатальных ошибок 500 для посетителей.
- Встроенное ограничение по времени (минимальное окно между автоматическими усечениями — 5 секунд). Предотвращает перегрузку пулов соединений с базой данных, если на сервере базы данных возникают проблемы с диском или квотами на системном уровне.
- Состояние таблиц в реальном времени и телеметрия:
- Текущий механизм хранения (MEMORY или InnoDB).
- Общее точное количество строк.
- Размер отформатированных данных, размер индекса и общий объем.
- Параметры сортировки таблицы и формат строк.
- При использовании MEMORY: отображается ограничение max_heap_table_size, а также процент использования памяти в реальном времени и визуальные баннеры с предупреждениями.
- История восстановления после инцидента:
- Общее количество автоматических восстановительных вмешательств.
- Временная метка последнего автоматического восстановления.
- Отформатированная трассировка и сообщение о последней зафиксированной ошибке.
- Кнопка сброса статистики.
- Инструменты обслуживания в 1 клик:
- Очистить таблицу (TRUNCATE): вручную сбросить активность сеанса в 1 клик.
- Проверить и восстановить таблицу (REPAIR): вручную запустить восстановление/оптимизацию таблицы MySQL.
- Переключить механизм хранения: легко переключайтесь между MEMORY (самая высокая производительность оперативной памяти) и InnoDB (безопасный механизм с дисковым хранилищем без ограничений по объему памяти) без использования консолей SQL.
- автоматически запускается каждый час для поддержания работоспособности таблицы:
- Max Rows Pruning: автоматически удаляет записи, если количество строк превышает установленный вами предел безопасности (fxSessionMod_maxRows).
- Proactive Memory Evacuation: если таблица использует механизм MEMORY и использование памяти достигает 90%, надстройка проактивно очищает таблицу до того, как может возникнуть ошибка MySQL 1114.
Перейдите в Admin CP > Настройка > Параметры > [FX] Session Mod (admin.php?options/groups/fxSessionMod/):
| Настройка | По умолчанию | Описание | Рекомендуется |
|---|---|---|---|
| Автоматическое удаление данных из таблицы при ошибке fxSessionMod_autoEmpty | Включено | Автоматически удаляет данные из таблицы xf_session_activity при возникновении исключения в базе данных. | Включено |
| Автоматическое восстановление таблицы fxSessionMod_autoRepair | Включено | Попытка выполнить команду REPAIR TABLE перед удалением данных, если обнаружена ошибка в таблице. | Включено |
| Предотвращение сбоев в работе форума (проглатывание ошибок) fxSessionMod_swallowErrors | Включено | Подавляет отображение страниц с ошибкой 500 при возникновении неразрешимых ошибок активности сеанса. | Включено |
| Запись в журнал ошибок сервера fxSessionMod_logError | Включено | При каждом запуске восстановления создает запись в журнале административных ошибок сервера с подробной информацией об ошибке. | Включено |
| Максимальное количество строк fxSessionMod_maxRows | 0 | Запускает автоматическое усечение во время cron, если количество строк превышает это число.Установите значение 0, чтобы отключить эту функцию. | 0 (или 50000 для большого трафика) |
| Коэффициент сравнения | Механизм MEMORY (HEAP) | Механизм InnoDB |
|---|---|---|
| Место хранения | Системная оперативная память | Диск / буферный пул |
| Производительность записи | Очень высокая | Высокая (при дисковом вводе-выводе) |
| Ограничение емкости | Ограничено параметром max_heap_table_size | Практически не ограничено |
| Режим сбоя | Выдает ошибку 1114 (таблица заполнена) | Более медленная запись на диск при высокой нагрузке |
| Рекомендации | Идеально подходит для обеспечения высокой производительности в сочетании с [FX] Session Mod | Идеально подходит для стабильной работы без настройки памяти |
- XenForo: 2.2.0 или выше (совместимо с XenForo 2.3.x).
- PHP: 7.4.0 или выше (полностью поддерживается PHP 8.0, 8.1, 8.2, 8.3).
- База данных: MySQL 5.7+ / MariaDB 10.3+.
- Перейдите в Admin CP> Дополнения.
- Нажмите Установить / обновить из архива.
- Выберите пакет FX-SessionMod-1.0.0.zip и нажмите Загрузить.
- Подтвердите получение подсказок по установке.
- Загрузите каталог FX/SessionMod на свой веб-сервер по адресу:
<web_root>/src/addons/FX/SessionMod - Перейдите в Admin CP > Дополнения и нажмите Установить в разделе [FX] Session Mod.
php cmd.php xf:addon-install FX/SessionMod