掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
前面我們微構網絡發(fā)布了《WordPress在部分windows服務器下變得很卡的原因淺析》的文章,里面提到WordPress(數(shù)據(jù)庫采用mysql)從一臺linux服務器遷移到另一臺windows服務器上后變得很卡,通過溯源調試發(fā)現(xiàn)是在使用mysqli_real_connect進行數(shù)據(jù)庫鏈接是造成的卡。那么mysql數(shù)據(jù)庫host配置使用localhost和127.0.0.1進行鏈接有什么差異呢。我們通過一組對比測試來進行分享,測試代碼還是上一篇文章中提到的代碼,也就是采用mysqli_real_connect進行數(shù)據(jù)庫服務器連接。代碼如下:
<?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上基本上在幾毫秒內(大多數(shù)是2ms左右),而在windows上每次測試時間浮動較大,基本上是10-100ms之間(大多數(shù)在20-30ms之間)。但是在windows中,修改host刪除127.0.0.1 localhost配置后,所花的時間明顯增大。
因此,在linux中無論是使用localhost還是127.0.0.1 ,進行數(shù)據(jù)庫連接所花費的時間并沒有明顯的差別,在感官上是完全感受不到差別的。但在windows上,使用localhost連接,且host中沒有127.0.0.1 localhost時,連接所需要時間占到整個請求的絕大部分時長,會非常明顯的感覺到卡。
比如如下圖是在本地服務器測試windows上使用localhost,且刪除hosts配置,網絡請求計時情況。而連接所需要的時間就需要1.025秒,其他的網絡開銷等時間僅僅占絕少數(shù)部分。
因此,當項目遷移后請求響應時間明顯比原來長,而且排除代碼邏輯錯誤后,不妨考慮是否是由于localhost和127.0.0.1造成的差異問題。
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流