问题:在上传文件到文件服务器的时候,偶尔出现上传失败的情况,因为不是现的,非常难排查。经查看日志确认是网络问题后,网络中心的同学说网络是通的,没问题。所以接下来的就是我们需要找出网络不通的证据。
怎么证明呢?(您可以思考5秒,看看是否和我说的思路一致)
就是在生产服务器执行一个脚本,不断的ping目标地址,运行一段时间来看看结果。实测下来确实出现网络不通的情况多达10几次,有时持续一两分钟都不行!
以下主要是和运维相关的脚本了,不感兴趣的可以结束了。
Linux里面ping是不间断的,其实我想每个1分钟请求一次,而不用那么频繁。而且有些服务器还禁止了ping。
所以改用curl,具体参数详细可以查看教程链接
为了方便做对比,所以写个小脚本比较方便,命名checkurl.sh,接收一个url参数;再写个runCheckUrl.sh,然后使用Linux定时任务去执行这个runCheckUrl.sh脚本。
checkurl.sh
#!/bin/bash
TIME=$(date +%Y%m-%d%H%M)
usage(){
echo "Usage:$0 url"
exit 1
}
checkurl(){
local num=`curl -I -m 60 -w "http_code:%{http_code}| http_connect:%{http_connect}| time_namelookup:%{time_namelookup}| time_connect:%{time_connect}| time_pretransfer:%{time_pretransfer}| time_starttransfer:%{time_starttransfer}| time_total:%{time_total}| size_download:%{size_download}| speed_download:%{speed_download}\n" -o /dev/null $1`
#local num=`curl -s -S -m 60 $1`
echo "时间:${TIME},$1 站点访问: ${num}" >> /home/shell/logs/check.log
}
main(){
if [ $# -ne 1 ]
then
usage
fi
checkurl $1
}
main $*
runCheckUrl.sh
#! /bin/sh
sh /home/shell/checkurl.sh https://www.baidu.com
sh /home/shell/checkurl.sh https://www.example.com
Linux定时任务
相关命令是crontab,不熟悉的小伙伴自行找资料
[xxx@ecs123 home]$ crontab -l */1 * * * * /data/shell/runCheckUrl.sh
后面就是时不时观察日志/home/shell/logs/check.log
运行几天后,就可以理直气壮的找网络中心的同学了!
彩蛋:后面是换了域名解决了,但是还是有出现网络不通的情况,一天就只有一两次,错误大大降低了。