Устранение неисправностей
Перестала считаться статистика, что делать?
- Зайдите на странице Обслуживание > Состояние. Найдите лог ошибок;
- Посмотрите файл с php-ошибоками /var/log/errors.log (путь от корня Keitaro).
Расшифровки некоторых ошибок есть на этой страницы. Если не можете починить самостоятельно, напишите на support@keitarotds.com.
Ошибка 500 или белая страница
Если имеется доступ в админку. Посмотрите лог ошибок на странице Обслуживание > Состояние. В ином случае включите режим отладки Включение режима отладки.
Не удается авторизоваться, показывает ошибку «Авторизация заблокирована»
Сработала защита от перебора пароля в админку. Удалите файл /var/auth/store.dat, чтобы сбросить блокировку.
Не удается подключиться к серверам для получения лицензии
Причины:
- Nameserver, который прописан в /etc/resolve.conf недоступен;
- Настроен фаерволл с блокировкой исходящих соединений;
- Сервер keitarotds.com недоступен.
Решение для хостингов:
- Проверьте открывается ли у вас сайт http://keitarotds.com.
- Скачайте скрипт http://keitarotds.ru/getfile/test, загрузите его в директорию домена и запустите в браузере.
- Если появятся ошибки, задайте вопрос об их причине в саппорт вашего хостера.
Решение для серверов:
- Откройте keitarotds.com в браузере. Если сайт не открывается, пишите нам в support@keitarotds.com.
- Если у вас хостинг, обратитесь в саппорт хостинга с вопросом «По какой причине блокируются соединения к keitarotds.com?».
- Если у вас свой сервер. Сделайте пинг до 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 недостаточно памяти для выгрузки накопленных данных.
Варианты решения:
- Перейти на хранение в Redis
- Увеличить память в php.ini. Директива
memory_limit
- Удалить файл 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. Проверьте запущен ли 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" (или "No file or directory")
1. Проверьте наличие wait_timeout.
Это можно сделать в терминале:
mysql -e "show variables like 'wait_timeout';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | wait_timeout | 30 | +---------------+-------+
Чтобы отключить, удалите или закоментируйте в конфиге /etc/my.cnf
строку
#wait_timeout=10
Затем перезагрузите MySQL.
service mysqld restart service mysql restart service mariadb restart
2. Убедитесь, что в настройках у хранилища данных выбрано «Файлы» или «Redis».
3. Если есть возможность, установите Redis.
4. При наличии на сервере памяти менее 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!
Зайдите на страницу Настройки. Переключите кэш и хранилище данных на «Файлы».
Как избавиться от "[IPv6]" в отчетах
Для этого можно отключить 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
Cloudflare принудительно включает IPv6 и не позволяет отключить через интерфейм. Но пока еще можно отключить через API. Поэтому потребуется терминал. Это может быть терминал сервера, терминал OS X или Linux.
Скопируйте в блокнот следующий код:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/ZONEID/settings/ipv6" \ -H "X-Auth-Email: EMAIL" \ -H "X-Auth-Key: API_KEY" \ -H "Content-Type: application/json" \ --data '{"value":"off"}'
Замените ZONEID
на зону, ее можно взять на странице Overview
Замените EMAIL
на email вашего аккаунта.
И API_KEY
на ключ, который берется на странице «Profile».
Ошибка 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
POST Content-Length of xxx bytes exceeds the limit
Увеличьте лимиты в php.ini директив upload_max_filesize
и post_max_size
.
За размер загружаемого файла отвечает upload_max_filesize, а post_max_size устанавливает максимально допустимый размер данных, отправляемых методом POST. Это значение также влияет на загрузку файлов. Для загрузки больших файлов это значение должно быть больше значения директивы upload_max_filesize. Если дополнительно используется ограничение памяти, memory_limit также влияет на загрузку файлов. В сущности, memory_limit должна быть больше чем post_max_size
Redis is LOADING the dataset.
Это решение удалит собранную статистику, но восстановит работу трекера. Через терминал, выполните:
rm -rf /var/lib/redis/* service redis restart
Ошибка "Campaign cache missed"
Зайдите на странице «Обслуживание > Состояние» и нажмите на кнопку «Обновить кэш».
Ошибка "fread(): Length parameter must be greater than 0"
Зайдите на страницу «Обслуживание > Гео-базы» и обновите все базы.
Ошибка "Unknown storage engine 'TokuDB"
Выполните в терминале:
curl https://keitarotds.com/install.sh -sSL | bash -s -- -r -t redis,tune-mariadb,monit
При запуске крона "PHP Warning: Zend OPcache huge_code_pages: madvise(HUGEPAGE) failed: Invalid argument (22) in Unknown on line 0"
Отредактируйте файл /etc/php/php.d/10-opcache.ini
и поставьте значение директивы opcache.huge_code_pages=0