UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

nfsdの数を増やしたり減らしたり

nfsdの数を増やしたり減らしたり


0.改訂履歴

  • 2005.08.28 新規作成

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]#
  • もう1回起動したら8つ増えるか?
[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]# 
  • 10個に増えた.
  • 設定値を減らして実行してみる.
[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]# 
  • 減っている.
  • ちゃんと?新参者から消えていっている事がわかる...


広告スペース
Google