上上周五我司把部分项目从阿里挪到了腾讯的服务器,其中负载均衡也理所当然的从之前阿里的SLB换成了CLB。
迁移完之后,突然就有用户反映大文件上传不上去,类似这种:

sidekick负载均衡 负载均衡clb_sidekick负载均衡

于是乎,我去日志里面去看日志,发现根本就没有日志,连nginx的请求日志都没有。这不应该呀,于是呼我用postman尝试着调用了一下,结果返回的是下面这个,(先记住下面那一行,一会会用到)

sidekick负载均衡 负载均衡clb_上传_02

这里的413一看就是nginx那一层给报的,在我反映给运维之后,我自己也去跳板机连线上服务器,去看nginx配置,结果发现配置的client_max_body_size为1个G,完全够用,PS:我们业务代码限制的最大上传为80MB,用户上传的文件为70左右的文件。

运维得知这个413问题后,也是无厘头,后来我突然想起来,nginx的info也没有,那说明没有走到nginx这一层,后来我又突然想到了负载均衡,他会不会是在进行转发之前就已经被挡住了,然后结合上面413的那个图片,发现是stgw而不是nginx,这说明啥,说明是stgw这个玩意配置问题,stgw是啥呢?根据我目前的理解他就是腾讯负责负载均衡转发的一个web服务器,和nginx类似,里面的配置项大体一致。其中client_max_body_size的默认配置为60MB,

sidekick负载均衡 负载均衡clb_运维_03

虽然知道了这个,但是咱作为一名小小的码农,小小的打工人,根本就没有权限去腾讯控制台看这些东西的配置啊,当时运维又不在,无奈之下,只好先找leader帮忙查看一下,我们leader是PHP出身的,所以对于这些配置也是明白的。在腾讯的负载均衡控制台有一个七层个性化配置项,然后就可以在里面配置这些信息了,配置说明可以看这个链接https://cloud.tencent.com/document/product/214/15171?from=10680 在老大给配置完最大上传限制之后,上传接口就好使了。

总结:后来运维说阿里的slb并没有这些配置,腾讯的clb却有限制,而这些配置也是最容易被忽略的。这真是一个大坑啊