前段时间客户一服务器出现了一个奇怪的现象,一台配置不错的服务器,64G内存,2颗十二核CPU,连着一台存储,系统负载不规律的每过一段时间就非常高,高的时候维持在四五十,而这个时候呢,通过各种命令(top、vmstat、iostat、ifstat、sar)查看,各项资源都不是一般的闲,一时间摸不着头脑。
系统资源没问题,只能从服务着手了,这台服务器主要跑nis和nfs服务,nis服务只是提供网络用户,因为这个服务导致负载升高的可能性不高,首先就想到nfs了。
首先介绍下服务器的环境,这台服务器通过nfs将存储上的数据共享给客户端服务器,开发人员在客户端服务器上工作,开发团队大概有100人。由于开发人员多,项目也多,完全有可能因为nfs服务的性能瓶颈影响系统性能。
记得曾经跟红帽售后提过一个问题,大概是:我nfs服务器要接受好几台客户端服务器的挂载,而且研发人员也多,负载高的话,nfs服务会不会受不了。当时售后给我的答复是“没关系,只要把nfs进程数调大来就可以了”,如此淡定的回答让我信服了。不过这个时候我nfs服务器进程已经调到80个进程了,难道还不够?于是把进程数改到160个,重启nfs服务,观察了一段时间,服务器负载降下来了,到现在再也没出现类似负载高的情况。
调整nfs进程方法:
- [root@server2 ~]# vim /etc/init.d/nfs
- # Number of servers to be started by default
- [ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8
默认是8个进程,一般在生产服务器上,在CPU资源够的情况下,可以按照一颗CPU 8个nfs进程来算,24颗CPU 160个进程也不算过分。