让脚本睡100ms

时光总嘲笑我的痴心妄想 提交于 2020-07-29 10:48:53

故事背景

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

...
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也不会出问题,但这个脚本所作的事情所影响的链条上下游的服务器可能会出问题,故应处处小心。

拓展阅读

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!