调整后nginx请求日志
调整前nginx日志
调整前,接口调用很快就超时,因为有策略下线1分钟后继续调用,但每次调用持续不了多久就又超时,看nginx的accesslog有很多状态499的响应时间均大于3秒(因为调用方设置的readtimeout是3秒,所以超过3秒调用方就关闭连接,导致客户端这边499)。
一上去确认问题,查nginx配置,查服务器上相关网络配置(因为有现象:time_wait的tcp链接也比较多 ),看应用程序的cpu,内存,磁盘...及日志也没报错;
最后还是运维提醒有没有慢sql。
show variables like 'slow_query_log'; 查看是否开启慢sql查询日志
show variables like 'slow_query_log_file'; 慢sql日志文件
通过查看慢sql日志,确实存在慢sql,update语句为什么会慢呢?理论上都有索引的,但再次看表没有索引。。。因为有同事想在当前表更新字段,但当前表数据量比较大,更新字段ddl执行时间长,使用了rename table A to..A_bak。
使用create table A select * from A_bak where 1=0; 这个语句创建的表,结果A表和A_bak表的字段结构一致,但这波操作后缺少了A表的索引,导致A表很多慢sql!
可使用create table A like A_bak; 这样结构就一致了(包含索引)