在我使用的阿里云主机上有观察到开启了一个服务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……………………………………………………………………………………

 清除缓存 

  1. nscd -i passwd
  2. nscd -i group
  3. 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万次请求的情况是很少见的,所以这个性能提升也微呼其微.

转载于:https://www.cnblogs.com/xiewenming/p/8521059.html

linux开启nscd服务缓存加速相关推荐

  1. ubuntu 14.04 64 bit上开启nscd服务缓存加速及清除dns缓存

    简介 linux本身是没有dns缓存的,想使用dns缓存的话需要自己安装一个服务程序NSCD(name service cache daemon).  Nscd会缓存libc接口(比如 getpwna ...

  2. PHP服务缓存加速优化实战

    PHP服务缓存加速优化实战 (1) 操作码介绍及缓存原理: 当客户端请求一个PHP程序的时候,服务器的 PHP 引擎会解析该 PHP 程序,并将其编译为特定的操作码(Operate Code)文件. ...

  3. linux开启telnet服务(总结)

    linux开启telnet服务 1.基础知识 linux提供服务是由运行在后台的守护程序(daemon)来执行的. 守护进程的工作就是打开1个端口(port),等待(listen)进入的连接.在C/S ...

  4. 【转】Linux开启FTP服务和修改FTP密码

    这里写自定义目录标题 原文链接 Linux开启FTP服务和修改FTP密码 2021-03-18 17:43:08 一.Linux开启FTP服务 首先服务器要安装ftp软件,查看是否已经安装ftp软件下 ...

  5. Linux开启FTP服务和修改FTP密码

    一.Linux开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下: [root@VM_0_2_centos ~]# which vsftpd 若未安装,则安装并启动. 1. ...

  6. linux内核开启ssh,linux开启ssh服务

    本文概略:1)ubuntu发行版开启ssh.2)centos发行版开启ssh 1.ubuntu发行版安装/开启ssh服务 1.1 安装ssh服务端 sudo apt-get install opens ...

  7. linux怎样开启telnet服务,linux开启telnet服务

    步骤: sudo apt-get install xinetd telnetd     安装成功后,系统会显示有相应得提示 sudo vim /etc/inetd.conf  并加入内容:  teln ...

  8. linux如何开启telnet服务linux开启telnet服务的方法

    linux如何开启telnet服务?很多朋友对于这个问题不知道该如何解决:今天小编将为大家带来linux开启telnet服务的方法,有需要的朋友一起去看看吧! 方法: 1. 切换至root用户: 2. ...

  9. linux怎么开启telnet命令,linux如何开启telnet服务?linux开启telnet服务的方法

    linux如何开启telnet服务?很多朋友对于这个问题不知道该如何解决:今天小编将为大家带来linux开启telnet服务的方法,有需要的朋友一起去看看吧! 方法: 1. 切换至root用户: 2. ...

最新文章

  1. ios app证书申请基本流程
  2. selinux 的管理
  3. java命令模式_Java中的命令设计模式
  4. 【TensorFlow】conv2d函数参数解释以及padding理解
  5. Google强化学习框架SEED RL环境部署
  6. 好看的简图动态背景图床源码 多接口聚合图床
  7. mysql 删除版本信息_mysql5.5版本删除大表
  8. java 拦截指定jsp_详解Struts2中对未登录jsp页面实现拦截功能
  9. 如何从派生类函数调用父类函数?
  10. Atitit 单点登录实现几种模式架构图 目录 1. 因此要点也就以下两个:存储信任验证信任 1 1.1. 共享cookie (最简单 1 1.2. 通过 url带token参数跳转 1 1.3.
  11. Iocomp Ultra Pack ActiveX 5.12
  12. Linux 环境下,搭建 ZooKeeper 集群
  13. QuickCHM V2.6注册码
  14. 全国DNS服务器IP地址【电信、网通、铁通】。
  15. ESD5V5U5ULC TVS DIODE SC74-6 TVS - 二极管
  16. 最新青龙拉库命令及监控变量教学
  17. VLAN 、PVLAN
  18. 跟偶一起做:击退眼睛疲劳的五大运动
  19. platEMO里多目标进化算法对应的参考文献
  20. WPF 实现自定义的笔迹橡皮擦

热门文章

  1. Java机器学习库ML之一Dataset和Instance
  2. 离线轻量级大数据平台Spark之中文字符显示问题的解决
  3. 关于VC的dialog框PreTranslateMessage不响应现象及解决办法
  4. 量子计算基础知识-2019/11/12
  5. 点击切换div 的隐藏与显示
  6. 使用druid【使用官方的stater】||集成JdbcTemplate
  7. EasyStruct.js轻松创建可填入式html模板结构
  8. Python 图像处理 - 用PIL库提取图片中的颜色并展示为色谱实例演示,RGB颜色排序方法
  9. Python+selenium 技术篇-浏览器后台运行
  10. leetcode C++ 链表 24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换