# Устранение проблем на сервере

# Автоматическое восстановление системы

Воспользуйтесь утилитой kctl rescue для автоматической диагностики и починки частых проблем на сервере.

  1. Откройте терминал.
  2. Выполните:
kctl rescue
1
Ошибка «kctl: command not found»?

Выполните апгрейд конфигурации.

# FAQ

На сервере 502е ошибки
  1. Зайдите в терминал.
  2. Выполните
top
1

Смотрите показатель st (Stolen CPU):

Показатель больше 0 — виртуальный сервер недополучает ресурсы CPU. Напишите хостеру для VPS.

На сервере заполнен диск
Я увеличил RAM, но Keitaro не видит обновления

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

Some internal error. See System log.

Проверьте Системный лог

Накапливаются команды в очереди

Новые задачи добавляются быстрее, чем Keitaro обрабатывает текущие.

Если используете внешние сервисы, которые обновляют расходы - поставьте интервал между обновлениями побольше.

Ошибка RedisException. OOM command not allowed when used memory > maxmemory, много 500 ошибок трекера
  1. Уменьшите период хранения уникальных токенов в Обслуживание → Настройки → Системные, затем Срок действия токена на лендинге.

  2. Уменьшить срок уникальности в настройках кампаний: Настройки, затем Срок уникальности.

  3. Сделайте апгрейд конфигурации

Не удаётся сохранить обновлённую лицензию

Проверьте наличие свободного места используя консоль: df -h

Формат вывода результата: Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1 465Gi 407Gi 57Gi 88% 106779354 15058244 88% /

Предпоследняя колонка показывает % занятости места.

Got error 28 from storage engine

На сервере кончилось место.

Redis is LOADING the dataset.

That solution deletes all the unprocessed statistics, but fixes the issue fast.

Run in server terminal:

rm -rf /var/lib/redis/*
systemctl restart redis
1
2
База данных повреждена

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

  1. В терминале выполните:

sudo touch /forcefsck
1
  1. Перезагрузите сервер:

reboot
1
  1. Запустите MariaDB

systemctl start mysql
1
Как очистить inodes на сервере?

Inodes — это файловые дескрипторы в Linux, которые отвечают за метаинформацию о стандартных файлах, директориях или других объектах файловой системы, кроме непосредственно данных и имени.

В некоторых случаях число файловых дескрипторов близится к нулю. В ОС недостаточно описаний для определения местонахождения файлов. В таком случае файлы необходимо удалить или очистить. Для поиска выполните:

df -i
1

В результате получите структуру файловой системы со списком и количеством инодов, которые занимает та или иная папка. Соответственно необходимо идти по пути папки, и при каждом вхождении проверять количество инодов командой df -i. В конечном итоге найдете папку с файлами, которую необходимо удалить командой:

rm -rf deletedfolder/ 
1

Где deletedfolder/ — имя папки, которую необходимо удалить.

ВНИМАНИЕ Обязательно сверьтесь с папкой, которую собираетесь удалить: цель — удалить папку на сервере, переполненную файловыми дескрипторами, но не системные файлы сервера и ОС. Если не уверены в выполняемых действиях, напишите в нашу техподдержку, поможем очистить inode. В противном случае рискуете привести ОС сервера в неработоспособное состояние, восстановление которого не входит в нашу компетенцию. Будьте внимательны!

Сервер работает медленно

Это могло произойти из-за недостаточного выделения CPU-ресурсов на виртуальный сервер. Запустите на сервере команду

vmstat 1 5
1

Формат вывода ответа:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
111  0      0 3438984  20280 603200    0    0    11    20   38   85 10  2 32  0 56
139  0      0 3435676  20280 603220    0    0     0     0  936  318 15  3  0  0 82
126  0      0 3434312  20280 603212    0    0     0     0  903  198 14  4  0  0 82
92  0      0 3450964  20280 603868    0    0     0     0  885  198 13  3  0  0 83
145  1      0 3452128  20280 604412    0    0   448     0  993  254 14  2  0  0 84
1
2
3
4
5
6
7

Обратите внимание на значения в последнем столбце st. Значение больше 0 — CPU-ресурсов выделено недостаточно. В данном случае рекомендуем обратиться в поддержку облачного провайдера.

Как проверить диск HDD или SSD?

Посмотрите названия дисков:

cat /proc/scsi/scsi
1
Ошибка "malformed worker response"
  1. Откройте SSH терминал.
  2. Выполните:
cd /var/www/keitaro/application
find . -type f -name "*.php" -exec sed -i 's/?>//g' {} +
1
2

# Оптимизация базы

Остановите Cron:

systemctl stop crond
1

Запустите Cron:

systemctl start crond
1

# Удаление всей статистики

kctl run cli-php system:delete_all_stats --truncate-all-stats
1

Команда запросит подтверждение удаления всей статистики:

[WARNING] Important! The following will happen:
           - old versions tables removal,
           - clicks stats to the exact date removal (if specified in parameters),
           - optimization of the clicks in the stats,
           - cleaning all the current stats completely (if specified in parameters).

           These inquiries will block the database
           during the implementation and require additional free space on a disk.
1
2
3
4
5
6
7
8

Введите команды yes и нажмите ENTER.

Включите автоматическую чистку

Чтобы не допускать переполнение диска, выставьте срок хранения статистики в настройках Keitaro.