最近在做项目中,发现使用Postman第一次访问刚刚启动的程序,需要1000ms,而之后的每次访问,随便一个接口,时间就是几时ms,这就很纳闷了,好奇的是为什么会这样呢?
Mysql数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。
进行DNS解析为什么会出错?
因为当客户端发起超过百万的连接时,Mysql对于每个连接都会进行反DNS解析得到主机名这样,反向DNS解析是耗费时间的,有可能让用户感觉起来很慢。甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了。
可以在配置文件里面禁止Mysql进行反向DNS解析,只需在my.cnf的[mysqld]
段落中加入如下行即可:注意别加错了
skip-name-resolve (windows与linux下一样的)
只不过linux是my.cnf文件,windows是my.ini文件
当我把上面的语句加入到MySQL的时候,重新启动程序,再次访问,时间就是几时ms。很明显验证了这个问题,简单粗暴的分析方法。【my.ini配置文件找不到,那就是被隐藏了,我的是在c盘的ProgramData文件中,该文件被隐藏了。。】