五维工作室

这里是你们可以实现梦想的地方

分类 分布式 下的文章

腾讯云负载均衡的正则表达式解析的bug 导致 上传文件特别慢

腾讯云bug上传8k文件需要12秒.png
腾讯云bug上传8k图片文件居然需要12秒,这个问题困扰了好几天

首先去服务器查流量异常
流量监控软件iftop:yum install iftop -y
iftop -i eth0 -P 可以查看端口使用的流量排名

yum install nethogs –y
nethogs 可以查看进程流量使用排名

参考命令:tcpdump -i eth0 >>/root/eth0.txt (将抓取的数据输出到1.txt文件)
注:抓取60秒即可,时间不要太长,否则抓到的文件会比较大。

通过查看异常流量端口和异常流量进程,以及tcpdump出所有流量,发现服务器流量一切正常

后来通过同一个服务器的博客程序尝试上传文件,发现很快,然后把博客程序走 腾讯云的负载均衡
最后发现走负载均衡上传文件就是很慢,去检查了 腾讯云的负载均衡解析规则
~ .+.tipsns.com$ 正则表达式匹配 改为 *.tipsns.com 通配符域名,
同时 健康检查设置为 https://www.tipsns.com/
然后设置成功之后上传速度一切正常

腾讯云负载均衡的 正则表达式 真是不能用!!!

阅读全文

分布式环境静态资源js,css缓存控制

1.通过last-modified 最后修改时间
expires:Mon, 18 Sep 2017 03:10:01 GMT
last-modified:Sat, 19 Aug 2017 00:59:42 GMT

2.通过 etag
etag:W/"59978d7e-14ee"
etag由两部分组成,前面的是文件修改时间,后面的是文件大小

所以分布式环境下,必须在部署的时候同步所有不同服务器文件的修改时间
方法有三个
1.通过svn获取最新log的提交时间,然后通过touch 更新静态资源的文件修改时间,并使得所有服务器的文件修改时间保持一致
svn_mtime=`svn log -q -l 1 | awk '{print $5" "$6}'
find . -exec touch -d "${svn_mtime}" {} ;

2.通过客户端提交一个version.txt,然后记录最后提交的时间
svn_mtime="$(sed 's/^\s*//;s/\s*$//' version.txt)"
find . -exec touch -d "${svn_mtime}" {} ;

3.通过scp或者rsync去同步,这里不讨论这个,scp不支持增量,rsync需要额外的启动服务配置复杂,是否成功需要每一台机器
都去care

https://www.tipsns.com/read/34.html 这里是使用的第二种方法,可以让静态资源进行缓存

阅读全文