让脚本睡100ms

原创
2020/07/29 10:29
阅读数 90

故事背景

  当我们需要对所开发的服务进行一些简易的自动化测试,但是又不算是压力测试时,我们常常会编写这样的脚本:

...
while read line; do
    curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d $line http://localhost:6666/test -s
  done <${test_data_file}
...

存在问题

  如果这个请求只涉及到很简单的服务器信息返回,倒也问题不大,但是往往我们测试的内容会涉及数据库的交互,尤其是MySQL这种需要多加看护,防止瘫痪的数据库。上面的脚本极有可能让数据库集群出现或者加剧主从不同步的问题。我们需要让这个脚本能够睡一会儿,哪怕一小会儿。保证MySQL的cpu和io不会飙高。

  那我们根据实际的测试和考量,决定让脚本睡100ms,故上面的代码改成了下面这样:

...
while read line; do
	sleep 0.1
    curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d $line http://localhost:6666/test -s
  done <${test_data_file}
...

警示

  这给我们一个警示,如果某个脚本并不是一次性的,也不是定时执行的耗时短的,而是耗时很长的。一定要想尽一切办法让它休息,有时候它本身所在的服务器可能不sleep也不会出问题,但这个脚本所作的事情所影响的链条上下游的服务器可能会出问题,故应处处小心。

拓展阅读

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部