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

# kctl doctor

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

  1. Откройте терминал.
  2. Выполните:
kctl doctor
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/*
service redis restart
1
2
База данных повреждена

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

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

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

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

service mysql start
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

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

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

service crond stop
1

Запустите Cron:

service crond start
1

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

cd /var/www/keitaro && sudo -u keitaro php bin/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.