昨天上午到公司,研发发邮件通知说有用户反映登录我们A站速度很慢,登录进去之后的操作都是正常的,所以基本可以排除网络与服务器压力大的因素。 那么接下来就是看看数据库与缓存是否成为瓶颈,结果没有什么发现,毕竟A站是已经边缘化的产品,平日都没人去维护。 登录缓慢无非就是几个原因:数据库瓶颈、缓存问题、程序代码问题、并发量大应用服务器负载过高,调用第三方接口。 其他几个原因可以直接排出,那么就只剩下程序代码问题与调用第三方接口这俩可疑了,为了排除前者的嫌疑,我把在测试服务器上另外部署了一套环境,把代码回滚到N月前的版本,但是问题依旧。那么就只剩下一个原因了:A站登录时调用了第三方接口。可A站很久无人维护,并且原来的开发人员已经离职,具体有调用哪些外部接口谁也不清楚。 无奈,只好自己登录服务器进行抓包,尝试分析数据包中是否包含调用其他url,结果url没发现,却意外看到有问题的连接:
从上图可知,发送给114.112.81.104的连接没有返回数据,在服务器上看到A站本地服务器也只是发送数据到此地址,但没有回应: 由此断定,A站登录时调用114.112.81.104的80端口(从内部记录,可以根据此ip查到对应的url)。后来查到此url已经失效,无法访问,所以登录的时候调用失效的url就会等到超时才继续进行下一步,这就是登录速度慢的真正原因。 (责任编辑:IT) |