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