nfsdの数を増やしたり減らしたり
nfsdの数を増やしたり減らしたり
0.改訂履歴
1.はじめに
このドキュメントでは,RedHat Linux上でNFSサーバを運営している時に,nfsdの数を増加させたり減らしたりする手順を説明する. デフォルトでは,nfsdの起動数はSun MicrosystemsがSolarisで設定した8がデフォルトで使われてきているが,場合によってはプロセス数を増やしたほうがより処理がスムースに進む場合もある. このドキュメントではR稼働中のNFSサーバに対してRPCNFSDCOUNTの値を変更して反映する為の手順と,その挙動について調査した結果を載せる.
2.NFSの調査
- NFSデーモンにエラーがある場合,messagesファイルを確認する.
[root@client cron.daily]# grep nfs /var/log/messages |tail -n10
Aug 19 16:44:29 client kernel: nfs: server jupiter not responding, still trying
Aug 19 16:44:29 client kernel: nfs: server jupiter OK
Aug 19 16:46:24 client kernel: nfs: server jupiter not responding, still trying
Aug 19 16:46:24 client kernel: nfs: server jupiter OK
Aug 19 16:58:35 client kernel: nfs: server jupiter not responding, still trying
Aug 19 16:58:35 client kernel: nfs: server jupiter OK
Aug 19 17:02:00 client kernel: nfs: server jupiter not responding, still trying
Aug 19 17:02:00 client kernel: nfs: server jupiter OK
Aug 19 17:09:21 client kernel: nfs: server jupiter not responding, still trying
Aug 19 17:09:21 client kernel: nfs: server jupiter OK
[root@client cron.daily]#
|
- サーバの負荷の高い時間帯に,エラーがでている.
- レスポンスがないというエラーが出ているが,瞬間的に修復している事が分かる.
- また,エラーが表示されていても,実稼働上は,あまりサービスに問題ないようにみえる.
- NFSサーバのプロセスリストを確認する.
[root@jupiter root]# pstree
init-+-atd
|-bdflush
|-crond---2*[crond---sh---sh---sar---sadc]
|-gpm
|-irqbalance
|-java
|-keventd
|-khubd
|-8*[kjournald]
|-klogd
|-kscand
|-ksoftirqd/0
|-ksoftirqd/1
|-kswapd
|-kupdated
|-lockd
|-mdadm
|-mdmpd
|-mdrecoveryd
|-6*[mingetty]
|-mysqld_safe---mysqld
|-8*[nfsd]
|-ntpd
|-portmap
|-rpc.mountd
|-rpc.rquotad
|-rpc.statd
|-rpciod
|-scsi_eh_0
|-snmpd
|-swatch---perl
|-syslogd
|-xfs
`-xinetd-+-in.telnetd---login---bash---su---bash---pstree
`-in.telnetd---login---bash---su---bash
[root@jupiter root]#
|
- 8つのプロセスが存在している.この値はデフォルトである.
- topコマンドを実行する.
16:11:16 up 72 days, 2:57, 3 users, load average: 0.51, 0.54, 0.67
83 processes: 82 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 1.0% 0.0% 1.0% 0.0% 0.4% 26.0% 170.6%
cpu00 0.9% 0.0% 0.5% 0.1% 0.5% 12.7% 84.8%
cpu01 0.1% 0.0% 0.5% 0.0% 0.0% 13.3% 85.8%
Mem: 3082460k av, 3061160k used, 21300k free, 0k shrd, 99180k buff
1923004k actv, 335464k in_d, 56424k in_c
Swap: 6005752k av, 0k used, 6005752k free 2206400k cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
18306 mysql 20 0 26356 25M 2016 S 1.5 0.8 615:07 1 mysqld
1342 root 15 0 2040 2040 988 S 0.0 0.0 88:59 1 snmpd
1395 root 15 0 0 0 0 SW 0.0 0.0 54:16 0 nfsd
1399 root 15 0 0 0 0 SW 0.0 0.0 54:01 0 nfsd
1400 root 15 0 0 0 0 SW 0.0 0.0 53:59 1 nfsd
1402 root 15 0 0 0 0 SW 0.0 0.0 53:52 0 nfsd
1398 root 15 0 0 0 0 SW 0.0 0.0 53:48 0 nfsd
1397 root 15 0 0 0 0 SW 0.0 0.0 53:25 1 nfsd
1396 root 15 0 0 0 0 SW 0.1 0.0 53:19 0 nfsd
1401 root 15 0 0 0 0 SW 0.0 0.0 53:02 0 nfsd
1455 tomcat 25 0 23148 22M 1276 S 0.0 0.7 42:57 0 java
7 root 15 0 0 0 0 SW 0.0 0.0 24:38 1 kswapd
454 root 15 0 0 0 0 SW 0.0 0.0 18:34 1 kjournald
8 root 15 0 0 0 0 SW 0.0 0.0 18:26 0 kscand
|
- OSが72日間稼働している中で,nfsdは均等に動作している模様.
- NFSのスレッドがどのくらい使われているかを調べる.
[root@jupiter root]# cat /proc/net/rpc/nfsd
rc 19160 21834801 760638436
fh 160 784487385 0 143466 5028481
io 1089667133 512202285
th 8 11201352 489022.780 45733.730 10447.990 0.000 5366.160 4444.750 5181.520
4300.430 0.000 12212.600
ra 16 80248706 119378 32964 50509 19139 43027 39818 16990 28988 12760 91629932
net 782492399 782492399 0 0
rpc 782492397 2 2 0 0
proc2 18 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
proc3 22 2 217892835 7082606 193385190 164751131 6 172242211 9405790 2640473 38267
6 0 665237 6735 2014847 0 356424 4155941 8052 8 0 5143713
[root@jupiter root]#
|
- thはスレッドを示しているが,最初の3つの値が多い場合,プロセスを増やした方が良いとされている.
[root@jupiter root]# ps -C nfsd
PID TTY TIME CMD
19315 ? 00:00:00 nfsd
19316 ? 00:00:00 nfsd
19317 ? 00:00:00 nfsd
19318 ? 00:00:00 nfsd
19319 ? 00:00:00 nfsd
19320 ? 00:00:00 nfsd
19321 ? 00:00:00 nfsd
19322 ? 00:00:00 nfsd
[root@jupiter root]#
|
[root@jupiter root]# /etc/init.d/nfs start
NFSサービスを起動中: [ OK ]
NFSクォータを起動中: [ OK ]
NFSデーモンを起動中: [ OK ]
NFS mountdを起動中: [ OK ]
[root@jupiter root]#
|
[root@jupiter root]# ps -C nfsd
PID TTY TIME CMD
19315 ? 00:00:00 nfsd
19316 ? 00:00:00 nfsd
19317 ? 00:00:00 nfsd
19318 ? 00:00:00 nfsd
19319 ? 00:00:00 nfsd
19320 ? 00:00:00 nfsd
19321 ? 00:00:00 nfsd
19322 ? 00:00:00 nfsd
[root@jupiter root]#
|
- 増えていなかった.
- これは,スクリプトの中で最大数を制限しているからである.
- これを確認し,設定を変更する.
変更前 |
[root@jupiter root]# cat /etc/rc.d/init.d/nfs | grep RPCNFSDCOUNT
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8
daemon rpc.nfsd $RPCNFSDCOUNT
[root@jupiter root]#
|
変更後 |
[root@jupiter root]# cat /etc/rc.d/init.d/nfs | grep RPCNFSDCOUNT
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=10
daemon rpc.nfsd $RPCNFSDCOUNT
[root@jupiter root]#
|
[root@jupiter root]# ps -C nfsd
PID TTY TIME CMD
19315 ? 00:00:00 nfsd
19316 ? 00:00:00 nfsd
19317 ? 00:00:00 nfsd
19318 ? 00:00:00 nfsd
19319 ? 00:00:00 nfsd
19320 ? 00:00:00 nfsd
19321 ? 00:00:00 nfsd
19322 ? 00:00:00 nfsd
19370 ? 00:00:00 nfsd
19371 ? 00:00:00 nfsd
[root@jupiter root]#
|
[root@jupiter root]# cat /etc/rc.d/init.d/nfs | grep RPCNFSDCOUNT
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8
daemon rpc.nfsd $RPCNFSDCOUNT
[root@jupiter root]#
PID TTY TIME CMD
19315 ? 00:00:00 nfsd
19316 ? 00:00:00 nfsd
19317 ? 00:00:00 nfsd
19318 ? 00:00:00 nfsd
19319 ? 00:00:00 nfsd
19320 ? 00:00:00 nfsd
19321 ? 00:00:00 nfsd
19322 ? 00:00:00 nfsd
19370 ? 00:00:00 nfsd
19371 ? 00:00:00 nfsd
[root@jupiter root]# /etc/init.d/nfs start
NFSサービスを起動中: [ OK ]
NFSクォータを起動中: [ OK ]
NFSデーモンを起動中: [ OK ]
NFS mountdを起動中: [ OK ]
[root@jupiter root]# ps -C nfsd
PID TTY TIME CMD
19315 ? 00:00:00 nfsd
19316 ? 00:00:00 nfsd
19317 ? 00:00:00 nfsd
19318 ? 00:00:00 nfsd
19319 ? 00:00:00 nfsd
19320 ? 00:00:00 nfsd
19321 ? 00:00:00 nfsd
19322 ? 00:00:00 nfsd
[root@jupiter root]#
|
- 減っている.
- ちゃんと?新参者から消えていっている事がわかる...