【问题标题】:Run multiple clients at once一次运行多个客户端
【发布时间】:2020-05-27 14:06:09
【问题描述】:

我正在使用Percona Query Playback tool,我想同时运行多个客户端

这是示例命令

/usr/local/bin/percona-playback --queue-depth 99999 --mysql-max-retries 0 --mysql-host somehost.xxx.com --mysql-username xxx --mysql-password xxxx --mysql-schema xxx --query-log-file some_slow_log.log

我希望能够同时运行 30 倍。我应该看什么工具/框架/库?

【问题讨论】:

标签: devops benchmarking query-performance percona


【解决方案1】:

如果您在终端上运行。运行for 循环。

for run in {1..30}
do
  command &
done

&在后台运行进程,这样你就可以继续使用shell而不必等到脚本完成

for run in {1..30}
do
/usr/local/bin/percona-playback --queue-depth 99999 --mysql-max-retries 0 --mysql-host somehost.xxx.com --mysql-username xxx --mysql-password xxxx --mysql-schema xxx --query-log-file some_slow_log.log &
done

【讨论】:

  • 按顺序运行它们,而不是同时运行。也许您的意思是 command & 而不是 ;
  • 你的第一个和最后一个代码块仍然是连续的,没有使用&
  • 您的答案没有这么说,并且问题的“示例命令”不使用&。 bash 的语法也不是这样工作的:&; 与命令本身是分开的。 for i in {1..30}; do true & done 是有效的,& ; 也可以,但是是多余的。您答案的关键部分是隐藏在中间代码块最右侧的一个字符,大多数读者很容易错过。但无论如何,这个问题与How can I execute parallel "for" loops in Bash? 重复,所以我们可以关闭它而不是修复您的答案。
  • 无论如何,感谢您的建议。我修好了。
  • 请注意,启动另一个后台线程的 bash 开销并非微不足道。如果您的查询列表足够长,您可以分摊足够的开销以忽略它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 2019-01-18
相关资源
最近更新 更多