有个论坛,源在SK(洛杉矶机房),我用美西搬瓦工(电信、移动用户)、PR(仅联通用户,稳定性还是可以的)进行反代,由于都是洛杉矶,反代和源PING都是1MS,偶尔波动也是2MS。速度都很好。
源机是独服,稳定性等都非常好。
做反代的NGINX机子,24小时ping源,都是1MS,也没有丢包。
论坛由于流量不大不小,也有许多的各种机器人什么的境外IP等等各种乱访问,基本上没有对MYSQL等有什么影响。
之前反代机子用的WIN2008,装NGINX(官方破1024文件句柄限制版本(1.17.3好像是,反正是1.17版本),不存在1024句柄限制,NGINX各种优化都做好了),后来发现ERROR日志里会有,upstream timed out (110: Connection timed out) while reading response header from upstream,说少吧,不少,说多吧,也不算特别特别多。我自己人工访问,偶尔会有抽风的情况,但是99.9%都正常访问,偶尔出现一次现象是响应非常慢,最后连接丢失,没有出现502 504等。情况不多,但是故意要去测试的话,平均下来1,2个小时还是可以点出来一次。
由于不知道到底是报错报的时候无法和源连上,还是和访问的客户端无法连接(前后端都使用了KEEPALIVE),于是换了WIN APACHE 2.4
APACHE各种优化好后,包括连接数等等,感觉之前说的手工能测出的1%连接丢失几乎没有了,但是ERROR日志里会偶尔有:
[proxy_http:error] [pid 2136:tid 16172] (OS 10060)由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 没错,是中文提示,为啥APACHE 2.4会有中文这个提示我也不知道,大部分日志都是英文的。
还是不死心,昨天直接换了CNETOS 7,各种核心文件操作句柄、连接数、安全优化,也使用了最高效的EPOLL模型 use epoll;
跑一段时间发现会出现
connect() failed (110: Connection timed out) while connecting to upstream,
同win下NGINX不同的报错是没有提及upstream timed out,但还是110连接超时。现在我就不明白了,这到底是什么原因呢。。。这个问题无论在搬瓦工CN2GIA还是PR都一样这种情况,换LINUX也一样。这到底是客户端问题(客户端自己异常关闭?或是机器人,可能是垃圾爬虫胡乱抓,但我没法从IP上面进行区分,感觉大部分报错的都是国内IP),还是我的NGINX CDN读源问题(也没PING丢包啊,1MS,几乎不丢包)。还请反代大神指教
总结:确实是丢包导致的。别看同在洛杉矶1MS
根据查看(还是用了普通PING,而不是TCPING,那东西占CPU有点高),发现PR白天都没事,晚10点到SK(源服务器)丢包4%,且LOG出现一些报错while conncet upstream(22点开始出现,凌晨1点完全消失)。而阿里云轻量,分配了同样多的用户,到SK(源服务器)没有丢包,日志就没有任何一个ERROR。
我想了想,确实阿里云HK轻量别看只适合联通(移动也凑合,没联通好,电信完全不行),但它的国际线路是最稳的,到联通也是最稳的。唯一缺点就是到洛杉矶要150MS,反代要2-3S才能读出来,但稳定是真稳定,国际带宽也充足。
而之前我的搬瓦工,也有类似情况,我想了想,搬瓦工DC6,别看三网CN2GIA,也经常抽风,如果偶尔有ERROR感觉还是讲得通的,毕竟艹得人太多,名气在那。总之全部因为NGINX回源过程导致的。反正我解惑了,就行了。感谢思路,一直以为自己哪配置错了。