Ошибка Import_logs.py при попытке проанализировать большой журнал доступа Apache (больше 900 МБ)

Я пытаюсь разобрать большие журналы Apache, но import_logs.py не работает с этой ошибкой:

2017-01-23 18:30:39,245: [INFO] Достигнуто максимальное количество попыток, сервер недоступен!_

Неустранимая ошибка: ошибка HTTP 500, внутренняя ошибка сервера, ответ:

{status:error,tracked:0,invalid:0,invalidindices:[]}_ Вы

можно перезапустить импорт

/awdata/piwik/cosmote/geratgweb04/www.cosmote.grwith_ssl-access.log-20170123 с момента сбоя, указав --skip=78454 в командной строке.

Я использую виртуальную машину с 8 процессорами и 8 ГБ памяти.

Моя версия ОС RHEL 7.3,

с версией apache — Apache/2.4.6 (Red Hat Enterprise Linux),

php — это PHP 7.0.14, а версия mariadb — 5.5.52 Piwik версии 3.0.1

Команда, которую я использую:

/var/www/html/zak/piwik/misc/log-analytics/import_logs.py --url=http://middlinf.ote.gr:81/piwik/ --idsite=6 --recorders=8 --enable-http-errors --enable-http-redirects --enable-static /awdata/piwik/cosmote/geratgweb04/www.cosmote.gr_with_ssl-access.log-20170123 --retry-max-attempts=20

Журнал ошибок Apache показывает:

[Вторник, 24 января 13:44:33.855134 2017] [: ошибка] [pid 17456:tid 140544525190912] [клиент 172.18.20.26:16610] Ошибка в Piwik (трекер): Ошибка запроса: SQLSTATE [40001]: Ошибка сериализации: 1213 Тупик обнаруживается при попытке получить блокировку; попробуйте перезапустить транзакцию В запросе:

UPDATE piwik_log_visit SET idvisitor = ?, user_id = ?,
    visit_last_action_time = ?, visit_exit_idaction_url = ?,
    visit_total_actions = visit_total_actions + 1 ,
    visit_total_interactions = visit_total_interactions + 1 ,
    visit_total_time = ?
    WHERE idsite = ? AND idvisit = ?

Параметры: массив ( 0 => ' \xa6\x96\xbc\xef\xb9\xde\xf5', 1 => '', 2 => '2017-01-23 08:14:43', 3 => 47298 , 4 => 0, 5 => 4, 6 => 11224, )

И:

[Вт, 24 января 13:51:58.582401 2017] [: ошибка] [pid 18419: tid 140544525190912] [клиент 172.18.20.26:18232] Ошибка в Piwik (трекер): Ошибка запроса: SQLSTATE [HY000]: Общая ошибка: 1205 Lock превышено время ожидания; попробуйте перезапустить транзакцию В запросе:

UPDATE piwik_log_visit SET idvisitor = ?, user_id = ?,
    visit_last_action_time = ?, visit_exit_idaction_url = ?,
    visit_total_actions = visit_total_actions + 1 ,
    visit_total_interactions = visit_total_interactions + 1 ,
    visit_total_time = ?
    WHERE idsite = ? AND idvisit = ?

Параметры: массив ( 0 =› ' \xa6\x96\xbc\xef\xb9\xde\xf5', 1 =› '', 2 =› '2017-01-23 08:42:33', 3 =› 49791 , 4 => 242, 5 => 4, 6 => 11371, )›

and mariadb log is showing:

Time: 170123 18:00:46
User@Host: root[root] @ localhost [127.0.0.1]
Thread_id: 1691 Schema: piwik_db QC_hit: No
Query_time: 3.858223 Lock_time: 0.000060 Rows_sent: 1 Rows_examined: 1
     SET timestamp=1485187246;
     SELECT visit_last_action_time, visit_first_action_time, idvisitor,
 idvisit, user_id, visit_exit_idaction_url, visit_exit_idaction_name,
 visitor_returning, visitor_days_since_first, visitor_days_since_order,
 visitor_count_visits, visit_goal_buyer, location_country,
 location_region, location_city, location_latitude, location_longitude,
 referer_name, referer_keyword, referer_type, idsite,
 visit_entry_idaction_url, visit_total_actions,
 visit_total_interactions, visit_total_searches, config_device_brand,
 config_device_model, config_device_type, visit_total_events,
 visit_total_time, location_ip, location_browser_lang, custom_var_k1,
 custom_var_v1, custom_var_k2, custom_var_v2, custom_var_k3,
 custom_var_v3, custom_var_k4, custom_var_v4, custom_var_k5,
 custom_var_v5 FROM piwik_log_visit
WHERE visit_last_action_time >= '2017-01-22 05:14:21'
  AND visit_last_action_time <= '2017-01-22 06:14:21'
  AND idsite = '6' AND idvisitor = '
ORDER BY visit_last_action_time DESC

Я порылся на форумах, но ничего интересного не нашел. Есть ли у вас какие-либо предложения?

Заранее спасибо.

-Танассис


person Athanasios Zakopoulos    schedule 24.01.2017    source источник


Ответы (1)


Пожалуйста, предоставьте SHOW CREATE TABLE piwik_log_visit. Я подозреваю, что вам не хватает композита

INDEX(idsite, idvisit)

(Столбцы могут быть в любом порядке.)

За

WHERE visit_last_action_time >= '2017-01-22 05:14:21'
  AND visit_last_action_time <= '2017-01-22 06:14:21'
  AND idsite = '6' AND idvisitor = '

вам нужно INDEX(idsite, idvisitor, visit_last_action_time), убедившись, что столбец диапазона указан последним.

Вы заметили, что этот диапазон охватывает 3601 секунду? Я рекомендую этот шаблон по разным причинам:

WHERE visit_last_action_time >= '2017-01-22 05:14:21'
  AND visit_last_action_time  < '2017-01-22 05:14:21' + INTERVAL 1 HOUR
person Rick James    schedule 24.01.2017
comment
Большое спасибо за ваш ответ. Вот вывод SHOW CREATE TABLE piwik_log_visit. docs.google.com/document/d/ Такого индекса нет конечно. Я попытаюсь создать его и перезапустить импорт журнала. Я сообщу вам в ближайшее время. Что касается интервального шаблона, я не уверен, как это сделать, поскольку это делается внутри команды piwik import_logs.py. Это не пользовательский запрос. - person Athanasios Zakopoulos; 27.01.2017
comment
Пожаловаться на piwik. - person Rick James; 27.01.2017