linux nscd是服務緩存守護進程,其英文全稱是“Name Service Cache Daemon”,它為NIS和LDAP等服務提供更快的驗證;緩存是一項非常重要的技術或機制,緩存的主旨就是提高客戶端訪問速度。
本教程操作環境:linux5.9.8系統、Dell G3電腦。
linux nscd是什么?
Linux下開啟緩存服務NSCD
NSCD(Name Service Cache Daemon)是服務緩存守護進程,它為NIS和LDAP等服務提供更快的驗證。不管是什么系統,緩存是一項非常重要的技術[或機制],緩存的主旨就是提高客戶端訪問速度。
NSCD命令選項:
# nscd --help Usage: nscd [OPTION...] Name Service Cache Daemon. -d, --debug Do not fork and display messages on the current tty -f, --config-file=NAME Read configuration data from NAME -F, --foreground Do not fork, but otherwise behave like a daemon -g, --statistics Print current configuration statistics -i, --invalidate=TABLE Invalidate the specified cache -K, --shutdown Shut the server down -t, --nthreads=NUMBER Start NUMBER threads -?, --help Give this help list --usage Give a short usage message -V, --version Print program version
NSCD配置文件:
NSCD配置文件為/etc/nscd.conf,NSCD程序在啟動的時候會讀取/etc/nscd.conf文件,每一行指定一個屬性和對應的值,或者指定一個服務和對應的值,#表示注釋。有效的服務設定是:passwd,group,hosts,services,ornetgroup五個。
NSCD配置文件相關參數解釋:
#設置日志文件 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>
使用NSCD對DNS進行緩存
DNS在服務器上的作用:
在需要通過域名與外界進行數據交互的時候,dns緩存就派上用場了,它可以減少域名解析的時間,提高效率。例如以下情況
? ? 使用爬蟲采集網絡上的頁面數據,
? ? 使用auth2.0協議從其他平臺(如微博或QQ)獲取用戶數據,
? ? 使用第三方支付接口,
? ? 使用短信通道下發短信等.
開啟NSCD DNS緩存服務的優點和缺點
優點:
本地緩存NDS解析信息,提高解析速度
DNS服務器掛了也沒有問題,在緩存服務時間范圍內,解析依舊正常
缺點:
DNS解析信息會滯后,如域名解析更改需要手動刷新緩存,NSCD不適合做實時的切換的應用,目前對于依賴DNS切換的服務,建議不要開啟DNS緩存。DNS Cache作為普通的DNS解析Cache那是沒問題的,如果你使用RDS云服務器,也不建議使用DNS緩存服務。
配置DNS緩存:
通過編輯/etc/nscd.conf文件,在其中增加如下一行可以開啟本地DNS Cache
enable-cache hosts yes #這個服務除了dns緩存之外還可以緩存passwd,group,servers
完整配置如下:
enable-cache passwd yes positive-time-to-live passwd 600 negative-time-to-live passwd 20 suggested-size passwd 211 check-files passwd yes persistent passwd yes shared passwd yes max-db-size passwd 33554432 auto-propagate passwd yes enable-cache group yes positive-time-to-live group 3600 negative-time-to-live group 60 suggested-size group 211 check-files group yes persistent group yes shared group yes max-db-size group 33554432 auto-propagate group yes enable-cache hosts yes positive-time-to-live hosts 3600 negative-time-to-live hosts 20 suggested-size hosts 211 check-files hosts yes persistent hosts yes shared hosts yes max-db-size hosts 33554432 enable-cache services yes positive-time-to-live services 28800 negative-time-to-live services 20 suggested-size services 211 check-files services yes persistent services yes shared services yes max-db-size services 33554432 enable-cache netgroup yes positive-time-to-live netgroup 28800 negative-time-to-live netgroup 20 suggested-size netgroup 211 check-files netgroup yes persistent netgroup yes shared netgroup yes max-db-size netgroup 33554432
NSCD服務查看和清除
NSCD緩存DB文件在/var/db/nscd下。可以通過nscd -g查看統計的信息:
# nscd -g nscd configuration: 0 server debug level 50d 14h 33m 40s server runtime 5 current number of threads 32 maximum number of threads 0 number of times clients had to wait no paranoia mode enabled 3600 restart internal 5 reload count passwd cache: yes cache is enabled yes cache is persistent yes cache is shared 211 suggested size 216064 total data pool size 544 used data pool size 600 seconds time to live for positive entries 20 seconds time to live for negative entries 280382 cache hits on positive entries 10047 cache hits on negative entries 3260 cache misses on positive entries 474 cache misses on negative entries 98% cache hit rate 6 current number of cached values 52 maximum number of cached values 2 maximum chain length searched 0 number of delays on rdlock 0 number of delays on wrlock 0 memory allocations failed yes check /etc/passwd for changes
清除指定類型緩存:
nscd?-i?passwd nscd?-i?group? nscd?-i?hosts
推薦學習:《linux視頻教程》