linux開啟nscd服務快取加速

2022-04-09 07:13:18 字數 3780 閱讀 6145

在我使用的阿里雲主機上有觀察到開啟了乙個服務nscd ,後來谷哥了下該服務的作用。了解到nscd會快取三種服務passwd group hosts,所以它會記錄三個庫,分別對應源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每個庫儲存兩份快取,乙份是找到記錄的,乙份是沒有找到記錄的。每一種快取都儲存有生存時間(ttl)。其作用就是在本當中增加cache ,加快如dns的解析等的速度。

一、nscd的配置

阿里雲配置如下:

[root@iz250eahq29z ~]# more /etc/nscd.conf 

#logfile /var/log/nscd.log

threads 6

max-threads 128

server-user nscd

debug-level 5

paranoia no

enable-cache passwd no

enable-cache group no

enable-cache hosts yes

positive-time-to-live hosts 5

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

檢視配置檔案服務的軟體包名稱

$rpm -qf /etc/nscd.conf

nscd-2.17-196.el7_4.2.x86_64

logfiledebug-file-name

指定除錯資訊寫入的檔名。

debug-levelvalue

設定希望的除錯級別。

threadsnumber

這是啟動的等待請求的執行緒數。最少將建立5個執行緒。

server-useruser

如果設定了該選項,nscd將作為該使用者執行,而不是作為root。如果每個使用者都使用乙個單獨的快取(-s引數),將忽略該選項。

enable-cacheservice

啟用或禁用制定的 服務 快取。

positive-time-to-liveservice

value

設定 service 在指定快取中正的專案(成功的請求)的ttl(存活時間)。 value 以秒為單位。較大的值將增加快取命中率從而減低平均響應時間,但是將增加快取的一致性問題。

negative-time-to-liveservice

value

設定 service 在指定快取中負的專案(失敗的請求)的ttl(存活時間)。 value 以秒為單位。如果存在由不在系統資料庫中的uid(使用者id)(例如在以root身份解包linux 核心源**時)所擁有的檔案將明顯改善效能;應該維持較小的值以降低快取一致性問題。

suggested-sizeservice

value

這是內部雜湊表的大小, value 應該保持乙個素數以達到優化效果。

check-filesservice

啟用或禁用檢查屬於指定 服務 的檔案的改變。這些檔案是 /etc/passwd,

/etc/group, 以及/etc/hosts。

二、nscd 服務檢視和清除

預設該服務在redhat或centos下是關閉的,可以通過services nscd start開啟。快取db檔案在/var/db/nscd下。可以通過nscd -g檢視統計的資訊,這裡列出部分:

nscd -g

nscd configuration:

5 server debug level

34d 23h 14m 18s server runtime

6 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服務同樣可以達到清理cache的目的。

三、nscd的效果

首先要看網路和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萬次請求的情況是很少見的,所以這個效能提公升也微呼其微.

linux開啟nscd服務快取加速 DNS快取

在我使用的阿里雲主機上有觀察到開啟了乙個服務nscd 後來谷哥了下該服務的作用。了解到nscd會快取三種服務passwd group hosts,所以它會記錄三個庫,分別對應源 etc passwd,etc hosts 和 etc resolv.conf每個庫儲存兩份快取,乙份是找到記錄的,乙份是沒...

linux的dns快取,NSCD服務

linux的dns快取,nscd服務 這兩天做壓力測試的時候發現,用webbench壓網域名稱要比壓ip位址慢好幾倍,而且壓網域名稱的時候nginx併發量也很低.反覆測試了好多遍,懷疑時間是花在dns解析上.在 etc hosts中做手動解析 1echo 211.157.145.103 m.app5...

Nscd 使用nscd作為本地dns快取

公司使用阿里雲主機,且首選dns使用的也是阿里雲的。但是有乙個face 的業務總是會報unknownhostexception。抓包查了一波發現雖然阿里dns有時候會servfail,但是這些都是請求的網域名稱後面加了localdomain導致的,所以理論上業務不應該出現unknownhostexc...