Pipeline process 5 (iteration) caused an error: Redundant argument in sprintf at /usr/bin/pt-query-digest line 2556
Pipeline process 5 (iteration) caused an error: Redundant argument in sprintf at /usr/bin/pt-query-digest line 2556
我正在使用 percona-toolkit 分析 mysql-slow-query(日志)。所以命令非常基本:
pt-query-digest slowquery.log
现在的结果(错误)是:
18.2s 用户时间,100ms 系统时间,35.61M rss,105.19M vsz
当前日期:2016 年 7 月 7 日星期四17:18:43
主机名:Jammer
文件: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
我在这里 bug-report 找到了一些东西,但这就像一种解决方法,并没有真正解决错误。即使在应用补丁后,命令结果看起来也不够令人满意。
我在 ubuntu 16.04 MySql 上遇到了同样的问题。
我的慢查询日志内容如下。
/usr/sbin/mysqld,版本:5.7.16-0ubuntu0.16.04.1-log ((Ubuntu))。开始于:
Tcp 端口:3306 Unix 套接字:/var/run/mysqld/mysqld.sock
时间 ID 命令参数
/usr/sbin/mysqld,版本:5.7.16-0ubuntu0.16.04.1-log ((Ubuntu))。开始于:
Tcp 端口:3306 Unix 套接字:/var/run/mysqld/mysqld.sock
时间 ID 命令参数
时间:2016-12-08T05:13:55.140764Z
User@Host: root[root] @localhost[] Id: 20
Query_time: 0.003770 Lock_time: 0.000200 Rows_sent: 1 Rows_examined: 2
设置时间戳=1481174035;
SELECT 计数 (*) 来自 INFORMATION_SCHEMA.TRIGGERS;
错误相同:
流水线导致错误:流水线进程5(迭代)导致
错误:sprintf 中的冗余参数位于 /usr/bin/pt-query-digest 行 2556。
Ubuntu 16.04
MySql 版本 14.14 分发 5.7.16
pt-query-digest 2.2.16
该错误似乎已在当前版本的工具包 (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]);
}
但正如原始问题和错误报告中所述,相当多的 tools/functions 受到影响,完整的错误修复包括许多小的更改:
https://github.com/percona/percona-toolkit/pull/73/files
我可能要迟到了。我想分享我是如何克服同样的错误的,因为它可能会帮助正在寻找答案的人。此时Percona工具包最新tag为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 - 所以我deleted/removed安装percona-toolkit
2 - 首先,我 cleaned/updated perl 版本
sudo apt-get install perl
3 - 然后我从 repository's 自述文件中提到的源代码安装了 Percona 工具包。像这样。我用的是 branch 3.0.
git clone git@github.com:percona/percona-toolkit.git
cd percona-toolkit
perl Makefile.PL
make
make test
make install
就是这样。希望这对某人有所帮助。
我发现这个版本 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.
请注意,您将看到错误消息:
“sprintf 中的冗余参数”
如果您忘记在格式规范(第一个参数)前放置一个 %。
我正在使用 percona-toolkit 分析 mysql-slow-query(日志)。所以命令非常基本:
pt-query-digest slowquery.log
现在的结果(错误)是:
18.2s 用户时间,100ms 系统时间,35.61M rss,105.19M vsz
当前日期:2016 年 7 月 7 日星期四17:18:43
主机名:Jammer
文件: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
我在这里 bug-report 找到了一些东西,但这就像一种解决方法,并没有真正解决错误。即使在应用补丁后,命令结果看起来也不够令人满意。
我在 ubuntu 16.04 MySql 上遇到了同样的问题。 我的慢查询日志内容如下。
/usr/sbin/mysqld,版本:5.7.16-0ubuntu0.16.04.1-log ((Ubuntu))。开始于: Tcp 端口:3306 Unix 套接字:/var/run/mysqld/mysqld.sock 时间 ID 命令参数 /usr/sbin/mysqld,版本:5.7.16-0ubuntu0.16.04.1-log ((Ubuntu))。开始于: Tcp 端口:3306 Unix 套接字:/var/run/mysqld/mysqld.sock 时间 ID 命令参数 时间:2016-12-08T05:13:55.140764Z User@Host: root[root] @localhost[] Id: 20 Query_time: 0.003770 Lock_time: 0.000200 Rows_sent: 1 Rows_examined: 2 设置时间戳=1481174035; SELECT 计数 (*) 来自 INFORMATION_SCHEMA.TRIGGERS;
错误相同:
流水线导致错误:流水线进程5(迭代)导致 错误:sprintf 中的冗余参数位于 /usr/bin/pt-query-digest 行 2556。
Ubuntu 16.04 MySql 版本 14.14 分发 5.7.16 pt-query-digest 2.2.16
该错误似乎已在当前版本的工具包 (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]);
}
但正如原始问题和错误报告中所述,相当多的 tools/functions 受到影响,完整的错误修复包括许多小的更改: https://github.com/percona/percona-toolkit/pull/73/files
我可能要迟到了。我想分享我是如何克服同样的错误的,因为它可能会帮助正在寻找答案的人。此时Percona工具包最新tag为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 - 所以我deleted/removed安装percona-toolkit
2 - 首先,我 cleaned/updated perl 版本
sudo apt-get install perl
3 - 然后我从 repository's 自述文件中提到的源代码安装了 Percona 工具包。像这样。我用的是 branch 3.0.
git clone git@github.com:percona/percona-toolkit.git
cd percona-toolkit
perl Makefile.PL
make
make test
make install
就是这样。希望这对某人有所帮助。
我发现这个版本 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.
请注意,您将看到错误消息: “sprintf 中的冗余参数”
如果您忘记在格式规范(第一个参数)前放置一个 %。