Linux應用- 使用nscd作爲本地dns緩存

1- 背景

公司使用阿里雲主機,且首選DNS使用的也是阿里雲的。但是有一個face++的業務總是會報UnKnownHostException。抓包查了一波發現雖然阿里DNS有時候會ServFail,但是這些都是請求的域名後面加了localdomain導致的,所以理論上業務不應該出現UnKnownHostException。業務端改了超時時間也增加了retry的次數,但是還是會報UnKnownHostException。感覺是請求太頻繁導致的,所以,在雲主機本地都啓用了nscd。

2- 安裝配置

  • 安裝很簡單
yum install -y nscd
systemctl enable nscd
systemctl start nscd
  • 有需要的話還可以配置一下nscd, /etc/nscd.conf
#設置日誌文件
logfile debug-file-name
 
#設置debug記錄的級別,默認是0
debug-level value
 
#程序啓動時,等待進去請求的處理線程數,至少5個
threads number
 
#最大線程數,默認32
max-threads number
 
#nscd程序以哪個用戶運行,如果設置了該選項,nscd將作爲該用戶運行,
#而不是作爲root。如果每個用戶都使用一個單獨的緩存(-S參數),將忽略該選項。
server-user user
 
#哪個用戶可以請求統計用戶
stat-user user
 
#在一個緩存項被刪除之前允許使用的次數,默認是5
reload-count unlimited | number
 
#是否啓用偏執模式,啓用會導致nscd週期性重啓,默認是no
paranoia <yes|no>
 
#如果啓用偏執模式,設置的定期重啓nscd的時間間隔,默認是3600秒
restart-interval time
 
#開啓或者關閉服務緩存,默認是no
enable-cache service <yes|no>
 
#爲成功請求的元素設置緩存TTL,單位是秒,值越大緩存命中率越高,
#降低平均響應時間,但會增加緩存的一致性問題
positive-time-to-live service value
 
#爲失敗查詢元素設置緩存TTL,單位是秒,應保持小值,減小緩存一致性問題
negative-time-to-live service value
 
#內部的散列表大小,value應該保持一個素數以達到優化效果。默認值是211
suggested-size service value
 
#啓用或者禁用檢查文件是否屬於指定的服務,這些文件是/etc/passwd、/etc/group、
#/etc/hosts、/etc/services、/etc/netgroup等
check-files service <yes|no>
 
#設置緩存在服務器重啓後,仍舊能提供緩存服務,在使用偏執模式時有用,默認是no
persistent service <yes|no>
 
#爲客戶端共享nscd數據庫在內存中做的映射,使客戶端可以直接搜索,
#而不用每次都查詢守護進行,默認是no
shared service <yes|no>
 
#該數據庫的最大大小,單位是bytes,默認是33554432
max-db-size service bytes
 
#此選項僅使用於passwd和group服務
auto-propagate service <yes|no>

3 其他命令

nscd -g                //查看命中數
nscd -i hosts          //清除緩存
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章