linux开启nscd服务缓存加速
在我使用的阿里云主機上有觀察到開啟了一個服務nscd ,后來谷哥了下該服務的作用。了解到nscd會緩存三種服務passwd group hosts,所以它會記錄三個庫,分別對應源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每個庫保存兩份緩存,一份是找到記錄的,一份是沒有找到記錄的。每一種緩存都保存有生存時間(TTL)。其作用就是在本當中增加cache ,加快如DNS的解析等的速度。
一、nscd的配置
通過編輯/etc/nscd.conf文件,在其中增加如下一行可以開啟本地DNS cache:
阿里云配置如下:
[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相關參數的解釋如下:
logfile?debug-file-name
指定調試信息寫入的文件名。
debug-level?value
設置希望的調試級別。
threads?number
這是啟動的等待請求的線程數。最少將創建5個線程。
server-user?user
如果設置了該選項,nscd將作為該用戶運行,而不是作為root。如果每個用戶都使用一個單獨的緩存(-S參數),將忽略該選項。
enable-cache?service?<yes|no>
啟用或禁用制定的?服務?緩存。
positive-time-to-live?service?value
設置?service?在指定緩存中正的項目(成功的請求)的TTL(存活時間)。?Value?以秒為單位。較大的值將增加緩存命中率從而減低平均響應時間,但是將增加緩存的一致性問題。
negative-time-to-live?service?value
設置?service?在指定緩存中負的項目(失敗的請求)的TTL(存活時間)。?Value?以秒為單位。如果存在由不在系統數據庫中的uid(用戶ID)(例如在以root身份解包linux 內核源代碼時)所擁有的文件將明顯改善性能;應該維持較小的值以降低緩存一致性問題。
suggested-size?service?value
這是內部散列表的大小,?value?應該保持一個素數以達到優化效果。
check-files?service?<yes|no>
啟用或禁用檢查屬于指定?服務?的文件的改變。這些文件是?/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 level34d 23h 14m 18s server runtime6 current number of threads128 maximum number of threads0 number of times clients had to waitno paranoia mode enabled3600 restart internal5 reload count passwd cache:no cache is enabledno cache is persistentno cache is shared0 suggested size0 total data pool size0 used data pool size3600 seconds time to live for positive entries20 seconds time to live for negative entries0 cache hits on positive entries0 cache hits on negative entries0 cache misses on positive entries0 cache misses on negative entries0% cache hit rate0 current number of cached values0 maximum number of cached values0 maximum chain length searched0 number of delays on rdlock0 number of delays on wrlock0 memory allocations failedyes check /etc/passwd for changes……………………………………………………………………………………清除緩存
除了上面的方法,重啟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萬次請求的情況是很少見的,所以這個性能提升也微呼其微.
轉載于:https://www.cnblogs.com/xiewenming/p/8521059.html
總結
以上是生活随笔為你收集整理的linux开启nscd服务缓存加速的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VB.NET网络是否联通Function
- 下一篇: vs2013在使用ef6时,创建模型向导