天天看點

linux的dns緩存,NSCD服務

linux的dns緩存,NSCD服務

 這兩天做壓力測試的時候發現,用webbench壓域名要比壓ip位址慢好幾倍,而且壓域名的時候nginx并發量也很低.反複測試了好多遍,懷疑時間是花在dns解析上.在/etc/hosts中做手動解析:

1

echo "211.157.145.103 m.app518.com" >> /etc/hosts

  之後再壓,速度果然正常了. 

  dns解析為什麼會慢呢?linux的dns緩存有什麼不同呢?上網查了一下發現linux本身是沒有dns緩存的,想使用dns緩存的話需要自己安裝一個服務程式NSCD(name service cache daemon). 

apt-get install nscd

  修改配置檔案/etc/nscd.conf,開啟dns緩存,修改這一行

enable-cache hosts yes

  這個服務除了dns緩存之外還可以緩存passwd,group,servers.這幾個東西的緩存暫時用不到. 

  重新開機nscd服務

service 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萬次請求的情況是很少見的,是以這個性能提升也微呼其微.

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1790309,如需轉載請自行聯系原作者