前言: 前段在公司內(nèi)部弄了一臺DNS緩存服務(wù)器裳瘪,但跑了一段時間后總感覺有點(diǎn)慢梧喷,希望加快緩存芹壕,記得上家公司的同事說過使用nscd可以加速DNS緩存速度燃辖,nscd會緩存三種服務(wù)passwd group hosts盒蟆,所以它會記錄三個庫踏烙,分別對應(yīng)源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每個庫保存兩份緩存,一份是找到記錄的历等,一份是沒有找到記錄的讨惩。每一種緩存都保存有生存時間(TTL)。其作用就是在本當(dāng)中增加cache 寒屯,加快DNS的解析速度
一荐捻、nscd安裝和配置
- 我這邊使用的是CentOS,安裝時候就一條命令
yum install nscd
- 安裝完成寡夹,現(xiàn)在就進(jìn)行配置处面,配置文件位置
/etc/nscd.conf
,配置如下
# /etc/nscd.conf
logfile /var/log/nscd.log
threads 10
max-threads 128
server-user nscd
debug-level 0
paranoia no
enable-cache passwd no
enable-cache group no
enable-cache hosts yes
positive-time-to-live hosts 60
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
我們只是開啟DNS cache 緩存菩掏,所以最重要的一條配置是
enable-cache hosts yes
二魂角、nscd啟用和驗證
- 進(jìn)行設(shè)置開機(jī)自啟和手動進(jìn)行啟動
CentOS 7 以上的的系統(tǒng)可以使用以下命令
systemctl enable nscd
systemctl start nscd
???CentOS 7以下的系統(tǒng)可以使用以下命令
chkconfig nscd on
service nscd start
- 進(jìn)行查看緩存信息,緩存DB文件在/var/db/nscd下智绸,可以使用命令
nscd -g
進(jìn)行查看
[root@gz--vm-dnscache-0001 ~]# nscd -g
nscd 配置:
0 服務(wù)器調(diào)試級別
91d 21h 49m 4s server runtime
10 current number of threads
128 maximum number of threads
0 number of times clients had to wait
no paranoia mode enabled
3600 restart internal
5 reload count
passwd cache:
no cache is enabled
no cache is persistent
no cache is shared
0 suggested size
0 total data pool size
0 used data pool size
3600 seconds time to live for positive entries
20 seconds time to live for negative entries
0 cache hits on positive entries
0 cache hits on negative entries
0 cache misses on positive entries
0 cache misses on negative entries
0% cache hit rate
0 current number of cached values
0 maximum number of cached values
0 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
三野揪、 nscd 部分配置說明
相關(guān)參數(shù)的解釋如下:
logfile debug-file-name
???指定調(diào)試信息寫入的文件名访忿。
debug-level value
???設(shè)置希望的調(diào)試級別。
threads number
???這是啟動的等待請求的線程數(shù)囱挑。最少將創(chuàng)建5個線程醉顽。
server-user user
???如果設(shè)置了該選項,nscd將作為該用戶運(yùn)行平挑,而不是作為root游添。如果每個用戶都使用一個單獨(dú)的緩存(-S參數(shù)),將忽略該選項通熄。
enable-cache service <yes|no>
???啟用或禁用制定的 服務(wù) 緩存唆涝。
positive-time-to-live service value
???設(shè)置 service 在指定緩存中正的項目(成功的請求)的TTL(存活時間)。 Value 以秒為單位唇辨。較大的值將增加緩存命中率從而減低平均響應(yīng)時間廊酣,但是將增加緩存的一致性問題。
negative-time-to-live service value
???設(shè)置 service 在指定緩存中負(fù)的項目(失敗的請求)的TTL(存活時間)赏枚。 Value 以秒為單位亡驰。如果存在由不在系統(tǒng)數(shù)據(jù)庫中的uid(用戶ID)(例如在以root身份解包linux 內(nèi)核源代碼時)所擁有的文件將明顯改善性能;應(yīng)該維持較小的值以降低緩存一致性問題饿幅。
suggested-size service value
???這是內(nèi)部散列表的大小凡辱, value 應(yīng)該保持一個素數(shù)以達(dá)到優(yōu)化效果。
check-files service <yes|no>
???啟用或禁用檢查屬于指定 服務(wù) 的文件的改變栗恩。這些文件是 /etc/passwd透乾, /etc/group, 以及 /etc/hosts磕秤。
四乳乌、為什么配置 nscd 加速緩存
- DNS 解析快慢嚴(yán)重影響了上網(wǎng)的體驗,我們公司所有的辦公設(shè)備DNS服務(wù)器都是使用內(nèi)部DNS Cache服務(wù)器市咆,兩百臺電腦不停向內(nèi)部DNS Cache 發(fā)起請求解析汉操,算不上特別繁忙,但是在高峰時候進(jìn)行這個緩存確實是有些影響蒙兰,提高一點(diǎn)