linux的dns緩衝,NSCD服務 這兩天做壓力測試的時候發現,用webbench壓網域名稱要比壓ip地址慢好幾倍,而且壓網域名稱的時候nginx並發量也很低.反覆測試了好多遍,懷疑時間是花在dns解析上.在/etc/hosts中做手動解析:1echo "211.157.145.103 m.app518.com" >> /etc/hosts 之後再壓,速度果然正常了. dns解析為什麼會慢呢?linux的dns緩衝有什麼不同呢?上網查了一下發現linux本身是沒有dns緩衝的,想使用dns緩衝的話需要自己安裝一個服務程式NSCD(name service cache daemon). 1apt-get install nscd 修改設定檔/etc/nscd.conf,開啟dns緩衝,修改這一行1enable-cache hosts yes 這個服務除了dns緩衝之外還可以緩衝passwd,group,servers.這幾個東西的緩衝暫時用不到. 重啟nscd服務1service nscd restart 之後發現不需要做手動解析,訪問速度回升到用ip地址一樣了. dns緩衝在伺服器上的作用 在需要通過網域名稱與外界進行資料互動的時候,dns緩衝就派上用場了,它可以減少網域名稱解析的時間,提高效率.例如以下情況: 使用爬蟲採集網路上的頁面資料, 使用auth2.0協議從其他平台(如微博或QQ)擷取使用者資料, 使用第三方支付介面, 使用簡訊通道下發簡訊等. dns緩衝到底能提升多少效能呢? 首先要看網路和dns伺服器的能力,dns解析越慢,dns緩衝的優勢就越大.比如我們在北京用的dns伺服器202.106.0.20和google的dns伺服器8.8.8.8速度會差不少. 如果dns伺服器比較穩定,那它對效率的影響就是一個常數.這個常數有多大呢? 我簡單試了一下.在區域網路內進行壓力測試,壓一個nginx下的靜態頁面,使用202.106.0.20這個dns伺服器,不用dns緩衝.平均一分鐘可以訪問27萬次.壓一個簡單的php頁面,平均一分鐘可以訪問22萬次.加上nscd服務後,靜態頁面平均一分鐘可以訪問120萬次,要快4倍多.php頁面平均一分鐘可以訪問50萬次,快一倍多. 如果是做搜尋引擎或是一些代理服務類的項目,比如簡訊通道,資料推送服務,這個效能提升還是比較可觀的.但在一般的項目中,一台伺服器每分鐘發22萬次請求的情況是很少見的,所以這個效能提升也微呼其微. 但在追求極限的道路上,每一小步都至關重要噢~