扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
前面我们微构网络发布了《WordPress在部分windows服务器下变得很卡的原因浅析》的文章,里面提到WordPress(数据库采用mysql)从一台linux服务器迁移到另一台windows服务器上后变得很卡,通过溯源调试发现是在使用mysqli_real_connect进行数据库链接是造成的卡。那么mysql数据库host配置使用localhost和127.0.0.1进行链接有什么差异呢。我们通过一组对比测试来进行分享,测试代码还是上一篇文章中提到的代码,也就是采用mysqli_real_connect进行数据库服务器连接。代码如下:
<?php $t1=microtime(true); $h=mysqli_init(); $r=mysqli_real_connect( $h, 'localhost', 'root', 'password', null, '3306' ); var_dump($r); $t2=microtime(true); var_dump($t2-$t1);
分别分为六组进行测试,分别是linux(localhost)、linux(127.0.0.1)、linux(localhost,删除hosts配置映射)、windows(localhost)、windows(127.0.0.1)、windows(localhost,删除hosts配置映射)。
场景 | 消耗时长 |
linux(localhost) | 1.8ms |
linux(127.0.0.1) | 2.8ms |
linux(localhost,删除hosts配置) | 1.8ms |
windows(localhost) | 20ms |
windows(127.0.0.1) | 30ms |
windows(localhost,删除hosts配置) | 1025ms |
需要注意的是,每次计算得到的时间不完全一样,在linux上基本上在几毫秒内(大多数是2ms左右),而在windows上每次测试时间浮动较大,基本上是10-100ms之间(大多数在20-30ms之间)。但是在windows中,修改host删除127.0.0.1 localhost配置后,所花的时间明显增大。
因此,在linux中无论是使用localhost还是127.0.0.1 ,进行数据库连接所花费的时间并没有明显的差别,在感官上是完全感受不到差别的。但在windows上,使用localhost连接,且host中没有127.0.0.1 localhost时,连接所需要时间占到整个请求的绝大部分时长,会非常明显的感觉到卡。
比如如下图是在本地服务器测试windows上使用localhost,且删除hosts配置,网络请求计时情况。而连接所需要的时间就需要1.025秒,其他的网络开销等时间仅仅占绝少数部分。
因此,当项目迁移后请求响应时间明显比原来长,而且排除代码逻辑错误后,不妨考虑是否是由于localhost和127.0.0.1造成的差异问题。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流