- PR -

"pstree -a | grep smbd" とすると親プロセスが大量にいる

投稿者投稿内容
koara
ベテラン
会議室デビュー日: 2005/09/16
投稿数: 96
投稿日時: 2005-09-28 15:25
Red Hat Linux 3.2.3-20
samba-2.2.8a.ja-2.rh9

cpu Pentium4 3.2G
mem 1024MB
hdd 250G(SATA) * 2
という構成のサーバーでwindowsクライアント30台程度にファイル共有をしています。

最近ある時刻になるとサーバーのファイルを参照している
アプリケーションがエラーを起こすようになりました。

そこで
wコマンドで
load averageを調べると
15:10:57 up 4 days, 22:04, 2 users, load average: 2.00, 2.04, 2.01

vmstatで負荷の割合?を調べると
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy id wa
0 2 16064 59548 130876 706132 0 0 27 36 26 7 2 5 40 3

us 2
sy 5
とシステムの負荷が高いようです。

webで調べたのですがsmbd自体は軽いのですが、ファイルの状態を調べるために
大量のsystem callを発生するためsystemの負荷が上がるという情報から
sambaが怪しいと考えました。


pstree -a | grep smbdとすると

|-smbd -D
| |-smbd -D
| |-smbd -D
 | [略:20個以上]
| `-smbd -D
|-smbd -D
|-smbd -D
|-smbd -D
[略:50個以上]
|-smbd -D
|-smbd -D
|-smbd -D
|-smbd -D
|-smbd -D


という結果で
正常に動いている他のサーバーと比べると
親?プロセスがたくさんあるという点に疑問を持ちました。

この原因はsambaと考えられますでしょうか?
アドバイスお願いいたします。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-09-28 15:54
こんにちわ.

smbd は session 毎に daemon を持ち上げるのでは?
そういう意味ではなく?
最初に待ち受けているのは1つのはずですけど.
koara
ベテラン
会議室デビュー日: 2005/09/16
投稿数: 96
投稿日時: 2005-09-28 16:26
kazさん
迅速なレスありがとうございます。

smbdが1つありsession毎にdaemonを持ち上げているというのは以下のような状態でしょうか?

init
|
[略]
|-smbd(待ち受け)

という状態のサーバーに4つのクライアントがアクセスすると

init
|
[略]
|-smbd(待ち受け)
| |-smbd(session 1)
| |-smbd(session 2)
| |-smbd(session 3)
| |-smbd(session 4)
|

のようになると私は思っていたのですが、
以下のように待ち受けのsmbdが複数あり、その中の1つだけがdaemonを連ねている状態です。

init
|
[略]
|-smbd(待ち受け)
|-smbd(待ち受け)
|-smbd(待ち受け)
|-smbd(待ち受け)
|-smbd(待ち受け)
|-smbd(待ち受け)
|-smbd(待ち受け)
|-smbd(待ち受け)
|-smbd(待ち受け)
| |-smbd(session 1)
| |-smbd(session 2)
| |-smbd(session 3)
| |-smbd(session 4)
|
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-09-28 16:55
引用:

koaraさんの書き込み (2005-09-28 15:25) より:
wコマンドで
load averageを調べると
15:10:57 up 4 days, 22:04, 2 users, load average: 2.00, 2.04, 2.01

vmstatで負荷の割合?を調べると
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy id wa
0 2 16064 59548 130876 706132 0 0 27 36 26 7 2 5 40 3

us 2
sy 5
とシステムの負荷が高いようです。


load averageの結果や、vmstatでb 2となっていますし、
IO処理待ちのプロセスが2ついるのではないでしょうか?

# ps ax
とやってみて、statが “D”のプロセスはいませんか?
koara
ベテラン
会議室デビュー日: 2005/09/16
投稿数: 96
投稿日時: 2005-09-28 17:29
anights様 レスありがとうございます。

引用:

load averageの結果や、vmstatでb 2となっていますし、
IO処理待ちのプロセスが2ついるのではないでしょうか?

# ps ax
とやってみて、statが “D”のプロセスはいませんか?



smbdに限るとstatが "D" のプロセスは1つでした。
stat D "割り込み不可の停止"はどういう意味なのでしょうか?

ps -alx
としたところstat が "D" のプロセス
5 132 27362 1 15 0 4440 992 down D ? 0:00 smbd -D
となっていました。

[ メッセージ編集済み 編集者: koara 編集日時 2005-09-28 17:31 ]

進展がありましたので、情報追加せさて下さい。

anights様 の

引用:

load averageの結果や、vmstatでb 2となっていますし、
IO処理待ちのプロセスが2ついるのではないでしょうか?



が気になり調べていたのですが。

smbd でstatが "D"のものは1つしかありませんでした。

そこで原因が違うのではと考えいろいろとプロセスを再起動させていたところ
postgresを再起動させた直後に
cpu load averageは
17:36:33 up 5 days, 29 min, 3 users, load average: 0.00, 0.05, 0.64
となり
vmstatは
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 14532 67320 77680 793100 0 0 27 39 28 11 2 5 41 3
となりました。

根拠はないのですがsmbd のstat "D" がdownしたため
smbdは子プロセスとして持ち上がらず親プロセスとなってしまった。
というのが私の推察なんですがどうでしょうか?


[ メッセージ編集済み 編集者: koara 編集日時 2005-09-28 17:45 ]
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-09-28 18:03
引用:

koaraさんの書き込み (2005-09-28 17:29) より:
smbdに限るとstatが "D" のプロセスは1つでした。
stat D "割り込み不可の停止"はどういう意味なのでしょうか?


この辺りにいっぱい書かれています。参考まで。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=21967&forum=10&start=40

先ほど書くのを忘れましたがvmstatコマンドは
# vmstat 5 などとインターバルを与えて結果を取られた方が宜しいかと。
一度きりだとある一瞬のステータスでしかないので
常時IO待ちが出ているのか、瞬間的なものなのか判断がつきません。

えーと、postgresqlも動いているんですか
そうなると全体的にどのような用途で使われてるかを提示して
頂いた方がコメントがつきやすいかと。

つまり現象としては、sambaに出ているかもしれませんが
原因は他の所にあるかもしれませんし。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-09-28 23:03
us sy id wa を合計しても50程度にしかならず、100にはほど遠いことが
気になります。カーネルがまともに動いていないんじゃないか、という
疑いを持ってしまうんですが、とりあえずそれは見なかったことにすると...

load average は三つとも2程度ですね。高めの水準で安定している。
もっと細かく vmstat をとってみないとアレですが、CPU使用率はたいした
ことなさそうだし、ほとんどがディスクI/O待ちなのではないでしょーか。

最近になって急にこういう症状が出てきたのだとすると、
・ユーザの利用が増えた
という可能性もありますが、
・ディスクが壊れかけていて読みにくくなっている
という可能性もあるかと思います。

あ、postgresというのを読み落としてました。
そっちが怪しいかなあ...

[ メッセージ編集済み 編集者: ぽんす 編集日時 2005-09-28 23:05 ]
koara
ベテラン
会議室デビュー日: 2005/09/16
投稿数: 96
投稿日時: 2005-09-29 13:15
anights様 ありがとうございます。

引用:

ここで、bは "The number of processes in uninterruptible sleep." で、
Linuxのプロセス管理上、uninterruptible sleep とは I/O 待ちを
しているプロセスが入る状態です。
# 文字通りの意味は「割り込み不可」ということですが、
# 実質的にはI/O待ち。



読んで理解するのに時間がかかりましたが、
stat D "割り込み不可の停止" だけではなく
vmstat の結果をどう読むかすごく勉強になりました。

今回の場合
vmstatが
b 2
となっていたので
ps -ax で stat D
のプロセスが2つないかと言われたわけですよね。

io の di doの話とてもおもしろかったです。


引用:

先ほど書くのを忘れましたがvmstatコマンドは
# vmstat 5 などとインターバルを与えて結果を取られた方が宜しいかと。
一度きりだとある一瞬のステータスでしかないので
常時IO待ちが出ているのか、瞬間的なものなのか判断がつきません。



vmstat 5としてみた所
現在は
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 14524 19972 67980 864220 0 0 27 35 19 35 2 5 5 4
0 0 14524 19952 68008 864236 0 0 0 66 153 88 0 0 100 0
0 0 14524 19928 68040 864288 0 0 0 3 106 19 0 0 100 0
0 0 14524 19924 68044 864288 0 0 0 3 104 19 0 0 100 0
0 0 14524 19924 68048 864284 0 0 0 20 107 19 0 0 100 0
0 0 14524 19924 68048 864284 0 0 0 4 106 19 0 0 100 0
となりました。
vmstat
だけだと統計が出るのですね。

引用:

えーと、postgresqlも動いているんですか
そうなると全体的にどのような用途で使われてるかを提示して
頂いた方がコメントがつきやすいかと。



postgresql-server-7.4.5-2
が動作しています。

具体的な用途としては
ファイル、データベース共通のデータ用サーバーとなっております。
apache,php等は動作しておらずクライアントのアプリケーションに
ただデータを見せています。

スキルアップ/キャリアアップ(JOB@IT)