Устранение неисправностей

Перестала считаться статистика, что делать?

  • Зайдите на странице Обслуживание > Состояние. Найдите лог ошибок;
  • Посмотрите файл с php-ошибоками /var/log/errors.log (путь от корня Keitaro).

Расшифровки некоторых ошибок есть на этой страницы. Если не можете починить самостоятельно, напишите на support@keitarotds.com.

Ошибка 500 или белая страница

Если имеется доступ в админку. Посмотрите лог ошибок на странице Обслуживание > Состояние. В ином случае включите режим отладки Включение режима отладки.

Не удается авторизоваться, показывает ошибку «Авторизация заблокирована»

Сработала защита от перебора пароля в админку. Удалите файл /var/auth/store.dat, чтобы сбросить блокировку.

Не удается подключиться к серверам для получения лицензии

Причины:

  1. Nameserver, который прописан в /etc/resolve.conf недоступен;
  2. Настроен фаерволл с блокировкой исходящих соединений;
  3. Сервер keitarotds.com недоступен.

Решение для хостингов:

  • Проверьте открывается ли у вас сайт http://keitarotds.com.
  • Скачайте скрипт http://keitarotds.ru/getfile/test, загрузите его в директорию домена и запустите в браузере.
  • Если появятся ошибки, задайте вопрос об их причине в саппорт вашего хостера.

Решение для серверов:

  1. Откройте keitarotds.com в браузере. Если сайт не открывается, пишите нам в support@keitarotds.com.
  2. Если у вас хостинг, обратитесь в саппорт хостинга с вопросом «По какой причине блокируются соединения к keitarotds.com?».
  3. Если у вас свой сервер. Сделайте пинг до keitarotds.com из консоли вашего сервера
ping keitarotds.com

При ошибке «Unknown host», проверьте какие ns-сервера прописаны в файле /etc/resolve.conf сервера. Можете добавить туда DNS от Google;

nameserver 8.8.8.8
nameserver 8.8.4.4

Если по-прежнему «Unknown host», пропишите в /etc/hosts

78.46.91.189 keitarotds.com

При наличии ошибки «Timed out», проверьте какие настройки заданы в фаерволле. При необходимости обратитесь в саппорт хостера.

"Sorry, Please create .../var/cache/*** and SET Mode 0777 or any Writable Permission!"

Такое происходит, когда крон выполняется от имени root или другого пользователя. Перенастройте крон на пользователя, от имени которого работает домен. Удалите содержимое /var/cache и выставите атрибуты 777.

Если включен selinux, нужно добавить правило для процесса httpd. Выполните через консоль, находясь в директории TDS.

chcon -R -t httpd_sys_rw_content_t ./var

...visitors.processing.dat exists (resuming) Fatal error: Allowed memory size of nnn bytes exhausted

Это связано с тем, что php недостаточно памяти для выгрузки накопленных данных.

Варианты решения:

  1. Перейти на хранение в Redis
  2. Увеличить память в php.ini. Директива memory_limit
  3. Удалить файл var/stores/visitors.processing.dat.

"The encoded file index.php cannot be run because the php.ini setting auto_prepend_file or auto_append_file is in use."

Откройте файл .htaccess и раскомментируйте строки:

#php_value auto_prepend_file none
#php_value auto_append_file none

Сохраните и выставите атрибуты на него 444, чтобы при обновлении TDS файл не затерся.

"Warning: touch(): Unable to create file /admin/..//var/cron/partitioning.lock because Permission denied"

Выставите для директории var/ и на всё содержимое атрибуты доступа 777.

"Сannot be processed because an untrusted PHP zend engine extension is installed"

Отключите eAccelerator.

"Connection attempt failed: SQLSTATE[08004] [1040] Too many connections"

Превышено максимальное количество подключений, которое выставлено в конфигурации MySQL. Увеличьте значение max_connections в /etc/my.cnf и перезагрузите MySQL.

"Table 'keitaro_stats_NNNNNNN' doesn't exist"

1. Зайдите по в директорию /var/lib/mysql/имя_базы 2. Найдите и удалите проблемную таблицу keitaro_stats_NNNNNNN.ibd 3. Новая таблица должна создаться сама.

"Got error 28 from storage engine"

Ошибка говорит о нехватке места на жестком диске для выполнения запроса.

Проверить наличие свободного места на диске через консоль, вы можете командой:

df -h

"Error while connecting redis: Redis server went away"

Для хостингов

  1. Зайдите на страницу Обслуживание > Настройки > Настройки производительности.
  2. Переключите опцию «Хранилище обработчика трафика» на «Файлы».

Для серверов

1. Проверьте запущен ли Redis:

$ service redis status

2. Запустите, если остановлен

$ service redis start

3. Добавьте в автозагрузку (CentOS)

$ chkconfig redis on

Проверьте работу Redis'а таким скриптом:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

При больших объемах трафика, лучше в настройках переключить хранилище кэша на «Файлы», при этом оставьте хранилище обработчика на «Redis».

"Warning fopen(....): failed to open stream: Permissions denied"

Выставите атрибуты 775 или 777 на файл, который фигурирует в ошибке.

"1286: Unknown storage engine 'InnoDB'"

Для хостингов Обратитесь в саппорт хостера для помощи в устранении этой ошибки.

Для владельцев серверов Добавьте в my.cnf:

default-storage-engine=innodb 
default-table-type=innodb

и перезагрузите MySQL:

service mysql restart

"Got error -1 from storage engine"

Найдите файл конфигурации MySQL my.cnf (обычно /etc/my.cnf или /etc/mysql/my.cnf). Замените в нем значение у директивы:

innodb_force_recovery = 0

Перезапустие MySQL

service mysql restart

Warning: session_start(): open(/tmp/sess_eruq40a3agi2a858ekbuhd7750, O_RDWR) failed: Permission denied (13) in /.../lib/Keitaro/Session.php on line 0

В ошибке говорится, что нет прав на создание сессии в директорию сессий. Измените путь для хранения сессий в session.save_path (php.ini) или повысьте атрибуты у текущей директории.

Данные перестали сохраняться в Redis

Попробуйте очистить редис: redis-cli -r FLUSHALL

Если помогло, проверьте ограничение памяти в конфиге редиса.

Не определяются страны у всех потоков с базой Sypex

Проверьте, не выставлено ли в конфиге php mbstring.func_overload = 2. Если стоит, замените на mbstring.func_overload = 0

Периодически TDS отвечает Internal Error или пустым экраном

Проверьте, не подключен ли модуль «xcache». Имеются многократные случаи несовместимости с ioncube. Отключите этот модуль, если есть возможность.

PHP Warning: unpack(): Type L: not enough input, need 4, have 0

Добавьте в php.ini строку

mbstring.internal_encoding = 8bit 

У php-cli может быть свой php.ini. В него необходимо также добавить эту строку.

После внесения изменений перезагрузите веб-сервер (apache, php-fpm).

"Connection attempt failed: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket"

База данных не выдерживает нагрузки. Зайдите в настройки Keitaro TDS, во вкладке «Производительность» найдите опцию «Хранилище обработчика трафика» и выберите «Файлы» или «Redis».

MySQL server has gone away (с Vesta)

Откройте файл конфигурации MySQL /etc/my.cnf. Закомментируйте строчку

#wait_timeout=10

и перезагрузите MySQL.

service mysqld restart

MySQL server has gone away (без Vesta)

1. Убедитесь, что в настройках у хранилища данных не выбрано «MySQL».

2. Если у вас не установлен Redis, то не рекомендуем включать проверку уникальности по IP в кампаниях.

3. При наличии на сервере памяти менее 1 GB, возможно срабатывание OOMKiller'а — это системная утилита, которая убивает процессы при нехватке памяти. Поможет создание swap-файла.

Что делать, если по ссылке кампании 404 ошибка?

Вы можете включить поддержку mod_rewrite, либо переключить формат адресов на странице «Обслуживание > Настройки > Другое».

Ниже решение по включению mod_rewrite.

Apache

Проверьте, включено ли расширение mod_rewrite, что в настройках домена (httpd.conf) есть директива:

AllowOverride All

Nginx

Откройте конфигурацию домена в nginx (/etc/nginx/nginx.conf или в /etc/nginx/vhosts/). Найдите секцию «location / {…}» и добавьте:

try_files $uri $uri/ /index.php?$args;

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

Проверьте наличие свободного места. Например, через консоль:

df -h

Появится, примерно, такой результат:

Filesystem      Size   Used  Avail Capacity   iused    ifree %iused  Mounted on
/dev/disk1     465Gi  407Gi   57Gi    88% 106779354 15058244   88%   /
...

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

Проверьте квоту пользователя:

quota -u USERNAME

055: Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column...

Отредактируйте файл /etc/my.cnf и замените значение:

[mysqld]
...
sql-mode=""

Перезагрузите MySQL.

User 'xxx' has exceeded the 'max_connections_per_hour'

У пользователя выставлено ограничение по количеству подключений в час.

Решения:

1. Убрать или увеличить ограничение

GRANT USAGE ON *.* TO 'xxx'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 0;

2. Переключить хранилище обработчика на Файлы или Redis (Обслуживание > Настройки > Производительность).

1054: Unknown column 'conversions' in 'field list'

Зайдите на страницу «Обслуживание > Миграции» и выполните миграцию 95.

Models\Stream #X not found

Выполните через phpMyAdmin команду:

DELETE FROM keitaro_triggers WHERE stream_id NOT IN (SELECT id FROM keitaro_streams)

Extension php_redis not installed!

Зайдите на страницу Настройки. Переключите кэш и хранилище данных на «Файлы».

Как избавиться от IP адресов 0.0.0.0

Для этого можно отключить IPv6 на сервере. Это заставит всех подключаться к серверу строго по IPv4. В CentOS отредактируйте файл /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Затем выполните:

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

Timeweb.ru

IPv6 отключается по запросу в техподдержку.

Cloudflare

IPv6 отключается в настройках проксирования.

Ошибка 504 при выгрузке отчета

Нужно увеличить таймауты.

Если используется PHP-FPM, нужно добавить инструкцию fastcgi_read_timeout N;:

location ~ \.php$ {
  fastcgi_pass unix:/tmp/php5-fpm.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;

  fastcgi_read_timeout 300;      # <----
}

В случае с Apache, необходимо увеличить время проксирования:

server {
...
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
    client_header_timeout  600;
    client_body_timeout    600;
...
}

Для обоих случаев можно увеличить внешние таймауты:

server {
...
    send_timeout                600;
    client_header_timeout  600;
    client_body_timeout    600;
}

Перезапустите Nginx

service nginx reload

igbinary_unserialize_header: unsupported version: 726750533, should be 1 or 2

Нужно отключить модуль igbinary в php.

Файлы конфигурации можно найти таким образом

php --ini | grep ini

Стоит PHP-FPM 7.0 и он занимает всю память сервера

В PHP 7.0 имеется проблема с утечкой памяти. Нужно скорректировать конфиг у PHP-FPM.

Переключение на ondemand заставит PHP-FPM создавать процессы адаптивно нагрузке:

pm = ondemand

Раскомментирование этих опций позволит PHP-FPM самоочищаться:

pm.process_idle_timeout = 10s
pm.max_requests = 500

[ERROR] mysqld: Can't create/write to file '/var/run/mariadb.pid' (Errcode: 13 "Permission denied")

Если вы использовали скрипт автонастройки для настройки сервера, выполните:

curl -sSL https://keitarotds.com/install.sh | bash -s -- -r -t tune-mariadb,monit