Конвейерный процесс 5 (итерация) вызвал ошибку: избыточный аргумент в sprintf в строке /usr/bin/pt-query-digest 2556.

Я использую percona-toolkit для анализа mysql-slow-query (журналов). Итак, команда довольно проста:

pt-query-дайджест slowquery.log

Теперь результат (ошибка):

18,2 с пользовательского времени, 100 мс системного времени, 35,61 млн RSS, 105,19 млн vsz

Текущая дата: Чт 7 июля 17:18:43 2016

Имя хоста: Джаммер

Файлы: slowquery.log

Конвейерный процесс 5 (итерация) вызвал ошибку: избыточный аргумент в sprintf в /usr/bin/pt-query-digest, строка 2556. Повторит конвейерный процесс 4 (итерация) еще 2 раза.

.. ..(один и тот же результат печатается дважды) ..

Конвейер вызвал ошибку: конвейерный процесс 5 (итерация) вызвал ошибку: избыточный аргумент в sprintf в /usr/bin/pt-query-digest, строка 2556. Завершение конвейера, поскольку процесс 4 (итерация) вызвал слишком много ошибок.

Теперь особенности среды, я использую Ubuntu 16.04, MariaDB 10.1.14, Percona-Toolkit 2.2.16.

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


Я столкнулся с той же проблемой на Ubuntu 16.04 MySql. Содержимое моего журнала медленных запросов выглядит следующим образом.

/usr/sbin/mysqld, версия: 5.7.16-0ubuntu0.16.04.1-log ((Ubuntu)). началось с: Порт Tcp: 3306 Сокет Unix: /var/run/mysqld/mysqld.sock Идентификатор времени Аргумент команды /usr/sbin/mysqld, Версия: 5.7.16-0ubuntu0.16.04.1-log ((Ubuntu)). началось с: Порт Tcp: 3306 Сокет Unix: /var/run/mysqld/mysqld.sock Идентификатор времени Время аргумента команды: 2016-12-08T05:13:55.140764Z Пользователь@Хост: root[root] @localhost [] Идентификатор: 20 Query_time: 0,003770 Lock_time: 0,000200 Rows_sent: 1 Rows_examined: 2 SET timestamp=1481174035; SELECT COUNT(*) FROM INFORMATION_SCHEMA.TRIGGERS;

Ошибка такая же:

Конвейер вызвал ошибку: конвейерный процесс 5 (итерация) вызвал ошибку: избыточный аргумент в sprintf в строке /usr/bin/pt-query-digest 2556.

Ubuntu 16.04 MySql Ver 14.14 Distrib 5.7.16 pt-query-digest 2.2.16


person Sagar Suri    schedule 07.07.2016    source источник
comment
У вас есть имя таблицы (или что-то еще) с % в нем?   -  person Rick James    schedule 11.07.2016
comment
эй @RickJames, ничего подобного. У вас случайно не было возможности проверить отчет об ошибке (ссылка выше).   -  person Sagar Suri    schedule 11.07.2016
comment
хотя у меня есть это в моих запросах, где я использовал его для соответствия префикса и суффикса игнорирования   -  person Sagar Suri    schedule 11.07.2016


Ответы (3)


Похоже, ошибка исправлена ​​в текущей версии инструментария (2.2.20) и, видимо, в предыдущих, начиная с 2.2.17.

Этот патч, кажется, делает свое дело для этого конкретного места в pt-query-digest:

--- percona-toolkit-2.2.16/bin/pt-query-digest  2015-11-06 14:56:23.000000000 -0500
+++ percona-toolkit-2.2.20/bin/pt-query-digest  2016-12-06 17:01:51.000000000 -0500
@@ -2555,8 +2583,8 @@
    }
    return sprintf(
       $num =~ m/\./ || $n
-         ? "%.${p}f%s"
-         : '%d',
+         ? '%1$.'.$p.'f%2$s'
+         : '%1$d',
       $num, $units[$n]);
 }

Но, как упоминалось в исходном вопросе и отчете об ошибке, было затронуто довольно много инструментов/функций, полное исправление состояло из множества небольших изменений: https://github.com/percona/percona-toolkit/pull/73/files

person elenst    schedule 10.12.2016

Я могу опоздать сюда. Я хочу поделиться тем, как я преодолел ту же ошибку, так как это может помочь кому-то, кто ищет ответ. В настоящее время последним тегом инструментария Percona является 3.0.9.

Я попытался запустить pt-query-digest после установки через apt, загрузив файл deb методами, предусмотренными документацией Percona, но ничего из этого не помогло. Это была та самая ошибка.

Pipeline process 5 (iteration) caused an error: 
Redundant argument in sprintf at /usr/bin/pt-query-digest line (some line)

1 - Итак, я удалил / удалил установку percona-toolkit

2 - во-первых, я почистил/обновил версию perl

sudo apt-get install perl

3 - затем я установил набор инструментов Percona из исходного кода, как указано в файле readme репозитория. как это. Я использовал ветку 3.0.

git clone [email protected]:percona/percona-toolkit.git
cd percona-toolkit
perl Makefile.PL
make
make test
make install

Вот и все. Надеюсь, это поможет кому-то.

person aimme    schedule 27.04.2018

я нашел ошибку в этой версии percona-toolkit-3.0.12-1.el7.x86_64.rpm и percona-toolkit-3.0.10-1.el7.x86_64.rpm в порядке, percona-toolkit очень полезен для меня

at ./pt-query-digest line 9302.
Terminating pipeline because process 4 (iteration) caused too many errors.
person bbotte    schedule 29.11.2018