linux的dns緩存,NSCD服務

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

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

  以後再壓,速度果真正常了.
  dns解析爲何會慢呢?linux的dns緩存有什麼不一樣呢?上網查了一下發現linux自己是沒有dns緩存的,想使用dns緩存的話須要本身安裝一個服務程序NSCD(name service cache daemon).
linux

1 apt-get installnscd

  修改配置文件/etc/nscd.conf,開啓dns緩存,修改這一行nginx

1 enable-cache hosts yes

  這個服務除了dns緩存以外還能夠緩存passwd,group,servers.這幾個東西的緩存暫時用不到.
  重啓nscd服務web

1 service nscd restart

  以後發現不須要作手動解析,訪問速度回升到用ip地址同樣了.緩存

###服務器

4.修改dns解析文件網絡

請在/etc/resolv.conf文件中添加:options timeout:1 attempts:1併發

####

dns緩存在服務器上的做用

  在須要經過域名與外界進行數據交互的時候,dns緩存就派上用場了,它能夠減小域名解析的時間,提升效率.例如如下狀況:
  使用爬蟲採集網絡上的頁面數據,
  使用auth2.0協議從其餘平臺(如微博或QQ)獲取用戶數據,
  使用第三方支付接口,
  使用短信通道下發短信等.app

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萬次請求的狀況是不多見的,因此這個性能提高也微呼其微.
  但在追求極限的道路上,每一小步都相當重要噢~ide

相關文章
相關標籤/搜索