记一篇访问页面 206 Partial Content的解决思路

问题如题

国庆回来没闲着,(尽管国庆前也没闲着)不是这个过期就是那个过期。这个阿里没余额了,按量计费的SLB负载均衡服务挂了,域名绑定的都是这个负债地址,一番折腾了一上午才整好。
欸,午觉醒来 问题又来了,果然祸不单行。某个下载页面又不能访问了,我去访问了一下,打开f12
报206错误,百度了一波,大致意思就是 文件过大 代理缓存不够或者网络堵塞被ddos等原因导致的。
image.png

好问题知道了,一步一步确认问题,开始解决。

排错

  1. 服务器问题
    奇怪的是,当我用域名访问,可以加载出页面 但是点击下载后还是下不动,可是我直接用IP访问 页面都加载不出来,emmmm 有点神奇。
    然后 根据域名的解析往下查。。。嗯 是负载均衡的地址,负载均衡和服务器之间应该是有缓存的,随后我把服务器的nginx关了(反正也用不了 且现在人不多就直接关了,各位重要生产环境的兄die千万不要这样排错,可以用不同服务器curl或者其他方法去排错)。果然服务器一关,用域名还是可以访问,emmmm缓存无误了,先不管 这次主要问题是服务器。
    过~
  2. 文件 权限
    又去看下nginx配置 看下这个请求的地址是哪里,去看了一下网页目录,是个静态网页 这就好办了,你别说我试了一下其他路径的内容,都能访问唯独这个不能访问,肯定是这个有什么问题,找找这个和其他页面不同的地方。看了下权限和大小 除了大小和其他的都是一样 这个页面是1.3MB的html 其他的是46KB 和这个可能有一点关系 但是肯定不是主要问题,一个1.3MB的网页都带不动吗 堂堂nginx。
    这里有篇文章讲到了和我差不多症状Nginx服务器js加载不全,报206 (Partial Content)错误
    可是他是拿nginx做的代理服务器,主要提供网页服务的不是他,我都没什么代理 更何谈代理缓存。算了抱着试一试的心态加上了这几个选项,我直接给改到2048K
#vi nginx.conf
        proxy_buffer_size 2048k;
        proxy_buffers   32 2048k;
        proxy_busy_buffers_size 2048k;

access_log   logs/access.log;	\\顺便看到访问日志没开 也顺带开一下调试看看。
:x

果然,没啥卵用。。。过~
3. 网络问题
不管了,先把锅甩给前端。欸 神奇了,问题就出在这,当我用sftp准备把这个1.3MB网页拉下来的时候,速度异常的慢,甚至卡住最后断开连接。先把锅收回来,让前端自己先忙 我再看看。
难不成是服务器被黑了?先看了下top 没有什么问题,然后又看了下iftop 欸 这个就有问题了,有非常多的IP链接到服务器上,但是流量不是特别大挨个查了几个IP 发现都是正常用户的,emmm应该不算恶意攻击。于是又去阿里的控制台看了下各指标。。。找到问题了,我们服务器是1Mb的固定带宽,首先这个服务器用作文件下载的服务器 只有这点是肯定不够的,现在下载页面也发布出去了 用户非常多,很明显扛不住。
image.png
正好,前面打开了nginx的访问日志,为了验证我的想法,去看监听了一下访问日志。果然 有非常多的用户一直在请求,请求地址都是那个下载地址,且IP 系统 浏览器型号等信息都是正常的用户信息,完全不算恶意攻击。

解决

找到问题了,就得想办法解决。服务器配置不够。。。emmmm那就升,看了下阿里的升降配,这个实例竟然不支持按量计费,好吧 看看固定带宽。。。鬼鬼 我觉得领导是不可能批的。
image.png
image.png
配置基本不可能升了,说重新买个服务器,也不现实。但是阿里有个按量计费的网络计费方式很符合现在的情况,记得有几台服务器是较新购入的,应该是按量计费。去看了下实例列表,果然 tm的几个测试服务器全是百兆按量计费,正式的服务器都是1兆-5兆的。。。。这什么道理。。。
好,现在是测试有足够的速度,而正式太慢,迁移不太实际,灵机一动:想到个法子
外网定死是1兆 那我们就走内网,内网是千兆不限制,我们用测试服务器做出口,接受请求,用nginx反代内网的正式服务器 就完全OJBK了。
发布出去的地址是域名,到时候改个地址就行了。
好,开始搭nginx,具体步骤参照我的其他博客:
openresty
上文件服务器上看下都有哪些端口在用,再用scp把证书文件搞过来,做个反代 搞定。

#vi nginx.conf
    server {
        listen       6087;
        server_name  xxxxx.com;

        location / {
        proxy_pass   http://10.168.40.34:6087/;		\\反代文件服务器内网地址
        }
:x
保存退出。

注意

当然 不可能这么一帆风顺。中途还出现了一堆小问题。

  1. 注意文件服务器原先nginx监听地址要加个localhost或者内网地址。
  2. 测试服务器的安全组记得添加这几个新端口,这个玩意抓破脑袋才想到 卡了我一会。
  3. 原先文件服务器监听的如果是ssl连接,要改成http,https链接由测试服务器与客户端建立,内网之间不需要什么ssl 况且IP搞证书也是麻烦事。
  4. 万维网和负载均衡改地址生效需要一段时间,不同的dns生效也不一致。就容易造成你正常了 客户还是卡的要死状态,可以用IP访问 排错。
  5. 修改地址绑定的时候需要和技术部的通知报备一下,在群里先问一下有没有使用原域名用来指定文件服务器地址的。如果是Http协议不影响,但是如果是其他协议 影响就挺大了。
    image.png

实验

好全部搞定后,过载下来了,速度上去了。下载也飞快,起飞。可惜的是没人夸我。
image.png

# Linux 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×