
topコマンドでサーバーを監視していると、1日に何回か、
急激にtasks の数が普段130程度なのが急上昇して 200 くらいになり、
同時に load average の値が、普段 0.1から 0.5 程度なのが
20 とか30 まで急上昇します。
急激に増えたtasks が何なのか調べようと
#ps -aux
を打って見ると、それは以下のようにほとんど全てが sendmail で、
迷惑メールがサーバーに流れ込んでいる状態なんだと思います。
そして、そのほとんどの sendmail の STAT が D になっています。
そして高負荷な状態が3分から10分継続します。
STAT COMMAND
D sendmail: sm-acceptingconnections: m48B0GUt030737 static-72-224-7-89.ipcom.comunitel.net [89.7.224.72] (may be forged): RCPT
D sendmail: sm-acceptingconnections: m48B0Gu1030737 maverick.lucnetsolutions.com [67.19.81.178] (may be forged): RCPT TO:<
D sendmail: sm-acceptingconnections: server [148.74.30.182] startup
D sendmail: sm-acceptingconnections: server 61.11.127.123-bb.static.vsnl.eth.net [61.11.127.123] (may be forged) startup
D sendmail: sm-acceptingconnections: server 59-115-193-195.dynamic.hinet.net [59.115.193.195] cmd read
D sendmail: sm-acceptingconnections: server 61-91-154-194.static.asianet.co.th [61.91.154.194] cmd read
D sendmail: sm-acceptingconnections: m48B0N92030737 host-84-223-248-186.cust-adsl.tiscali.it [84.223.248.186]: QUIT
しかし迷惑メールは基本的に一日中流れ込んでいて、sendmailの数が
上昇することはあっても load average が急上昇することはなく、
そのsendmailのSTAT は 大抵 S となっています。
STAT が D のsendmailプロセスが大量に発生しているときだけ、
load averageが20や30まで急上昇します。
STAT が D というのは 「割り込み不可のスリープ状態」だそうですが、
これはどういう状態なんでしょうか。また何故、発生するのか悩んでいます。
メモリー不足の線も考えましたがスワップが発生しているようでもなく・・
こういう状態になるたびにサーバーが重くなるので困っています。
何かsendmail以外の原因でサーバー負荷が大きくなった結果として
STATがDのsendmailが溜まったのかとも考えますが、
目を凝らしてtopやアクセスログを見てもそれらしい動きはなく
全く分かりません。
どこかチェックすべき点、対処法、sendmailプロセスのSTATがDの意味・・
などアドバイスをぜひ宜しく御願いいたします。

No.2ベストアンサー
- 回答日時:
>topで見ているときのSTATですので、S は sleep 、D も sleep(割り込み不可)だと。
ちゃんと読めていませんでした。すみません。
uninterruptible sleep とは I/O 待ちをしているプロセスが入る状態です。
可能性としては、ディスクI/O、ネットワークI/Oですね。
メールを各ユーザーごと保存するのに時間がかかっているか、接続先(or 元)のMTAの応答が無い(or 遅い)のではないでしょうか。
・ディスクのI/Oが遅い場合は、プロセス数を減らした方が速度が改善する可能性があります。iostat で確認できます。
RAIDを構成している場合は、ディスク障害の可能性も考えられます。なぜならスペア ディスクが無い状態でディスクが故障すると、パフォーマンスが極めて劣化するためです。
IDE、S-ATAの場合は、ディスク障害を正確に把握できない場合があるので、目視(聴覚?)点検が必要です。
・ネットワークI/Oが遅い場合は、状況によりますがプロセス数を増やした方が速度が改善する可能性があります。
softbank 宛てなど携帯メールアドレス宛てが多い場合は、プロセス数を減らした方がよいでしょう。なぜなら同時5接続以上あると問答無用で遮断してしまうからです。topでみるとすべてDの状態になりかねません。
(docomo, au は同時20接続だったはず。自信なし)
syslog には何かヒントになるようなログはありませんか?
この回答への補足
プロセス数を増やす、減らす、とは具体的にどういうことでしょうか?sendmailプロセスはほとんどがサーバーに流入する迷惑メールですが、STATがDのsendmailが大量に発生してload averageが急上昇するのは本当に突発的で、1日に何回もランダムに発生します。他の通常の大量のsendmailプロセス(迷惑メール)と何が違うのか区別ができません。違いは STATが D。というだけで。。
「メールを各ユーザーごと保存するのに時間がかかっている」ということでSTATがDになっている場合、四六時中だいたい同じ数量で迷惑メールが流れ込んでいるにもかかわらず、なぜそのときは、そうなるのか、違いが分かりません。
メールログ、/var/log/messages, /var/log/secure も、リアルタイムでにらめっこしていますが特に変わった動きもなく何も発見できませんでした。
メールボックスに大量のメールが残っている場合、このメールアカウントにログイン動作をすると、接続までに非常に時間がかかり、このとき負荷が急上昇するような気もします。負荷が上がることでsendmailプロセスがDで滞留してしまう、という可能性は・・

No.3
- 回答日時:
>プロセス数を増やす、減らす、とは具体的にどういうことでしょうか?
sendmail.cf 内の設定を変更してみてください。
CentOS 5 で見る限り、デフォルトはすべてコメントアウトされています。
---
# maximum number of children we allow at one time
O MaxDaemonChildren=20
# limit on number of concurrent queue runners
0 MaxQueueChildren=50
# load average at which we just queue messages
O QueueLA=8
# load average at which we refuse connections
O RefuseLA=12
---
sendmail.mc の場合は
---
define(`confMAX_DAEMON_CHILDREN', `20')
define(`confMAX_QUEUE_CHILDREN',`50')
define(`confQUEUE_LA', `12')
define(`confREFUSE_LA', `18')
---
mailq なども確認してみてください。
>メールボックスに大量のメールが残っている場合、このメールアカウントにログイン動作をすると、接続までに非常に時間がかかり、このとき負荷が急上昇するような気もします。
iostat -k で状況が確認できるのではないでしょうか。
---
まずは、sendmail のマニュアルを読むことから始めてみてはいかがでしょうか。

No.1
- 回答日時:
S: Sent(送信済)
D: Deferred(送信延期)
ではないかと。
外部からのスパム受信により、User unknown の返信に時間がかかっているか、スパムの踏み台にされているか、フォワード先が無いかのどれかでしょう。
踏み台にされている可能性がある場合は、以下のサイトで確認できます。
http://www.rbl.jp/index-j.php
第三者中継チェックや、ブラックリストチェックができるでこちらで確認してみてください。
この回答への補足
topで見ているときのSTATですので、S は sleep 、D も sleep(割り込み不可)だと。。 relay check は問題なく、ブラックリストも問題ありません。
四六時中サーバーに流れ込んでいるスパムのsendmailプロセスは常時結構な数がありますが、ほとんどがSで負荷は問題ないにもかかわらず、時々大量のDとなりserver loadが上昇します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- UNIX・Linux iptablesを設定するとメール送信処理が遅くなる!? 6 2022/06/07 01:11
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- バイク車検・修理・メンテナンス CBR250R(MC17)について質問があります。 1 2022/10/02 20:23
- 食生活・栄養管理 鉄分サプリについて 3 2022/09/11 08:48
- 預金・貯金 給付金で定期貯金を造るのは正しい判断か。 2 2022/12/06 23:08
- サッカー・フットサル Jリーグチーム人事。成績不振で監督更迭の場合、ヘッドコーチが監督昇格するのはなぜ? 1 2022/08/14 21:16
- 物理学 ACモーターは、無負荷時より、負荷時のほうが、電流値は上がるのでしょうか? 3 2022/11/30 17:15
- 医学 二次医療圏の人口分布 1 2023/05/10 11:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「mail」コマンドと「sendmail...
-
centos5でsendmailのエラー
-
RedHat 9 + linux-2.6.0-test1 ...
-
sendmailでのctladdrの変更
-
リモートデスクトップ接続でパ...
-
サーバーというのとメインフレ...
-
Mailの送信済みメールボックス...
-
同一のホスト名で何か問題があ...
-
エクセルで#N/Aを含めた平均値...
-
エラーメールで"too many hops"...
-
DNSサーバを設定したのですがns...
-
postfixでユーザごとに最大容量...
-
”Tortoise SVN” と ”Subversio...
-
expectを用いた正規表現[]のgre...
-
「DNSサーバーを自動的に取得す...
-
Clam Antivirusの設定について
-
Windows7でrsh,rcpを実行したい
-
Linuxでパスワード変更時に「it...
-
iPadの受信メールが消える
-
tarコマンド 予期せぬ EOF ftp...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【MTA】postfixとsendmail【違い】
-
sendmailのプロセス状態
-
「mail」コマンドと「sendmail...
-
sendmailで Received: from unk...
-
sendmailの設定でM4コマンドが...
-
postfixとsendmailの同時稼動に...
-
sendmailの再起動
-
MASQUERADE_AS(`mydomain.com')...
-
Linux maillog の読み取り方に...
-
qmail に付属の sendmail の設...
-
sendmailでのctladdrの変更
-
大量のsendmailのSTATがDでサー...
-
sendmailで使える記号
-
sendmailでのエラーメールの処...
-
mailxとsendmailは別のもの?
-
sendmailでメールが送れない
-
SSL通信においてFireFoxのみ画...
-
RedHat7.2 sendmail について
-
mailコマンドで外部メールに送...
-
sendmailとPostfixについて
おすすめ情報