flask程序接口响应慢,测试了一下,一个简单的接口,响应时间在毫秒级--15s之间,简直像个杀手一样。这个接口主要实现的作用就是通过某个唯一字段去获取值,类似于select * from user where name='zhangsan'这个复杂度,数据量在不到5000的样子,照理不应该出现这么慢的问题,于是排查了程序本身。
1、程序本身运行着2个相对较重的定时任务,怀疑是在执行定时任务的同时加载接口,资源争抢导致--慢
但执行定时任务的框架是异步的,且通过测试,在非定时任务期间,也有“慢”的问题
2、接口请求的是域名,有可能是网络问题导致
于是在运行程序的docker容器里,通过127.0.0.1的接口地址,响应时间也在毫秒级--15s之间。
requests.get(url).elapsed.total_seconds()
requests请求时长
3、有可能是数据库存在慢sql
经dba查询,该用户下不存在2s以上的慢sql
最终解决:
4、于是,在容器里写了个简单的获取数据的脚本,发现请求的时间都耗费在了连接数据库上,约15s,执行sql的速度在ms级。
百度之后,网友说数据库连接的host域名问题,于是改成了IP,简直不要太爽,嗖嗖的~