HOME>製品サポートWeb>製品技術情報/FAQ> Sendmail Single Switch 3.1J Windows >
[FAQID:473]下記のアプリケーションエラーが発生し、メールの配送が停止してしまいました。
「アプリケーション ポップアップ: sendmail.exe - アプリケーション エラー :
アプリケーションを正しく初期化できませんでした (0xc0000142)。」

このエラーは、Windowsのプロセスを立ち上げるために必要なデスクトップヒープの領域不足により、WindowsがSendmailのメール処理用子プロセスを生成できなかったことを表しています。

Sendmailのプロセスは、エンベロープ単位で 1つの子プロセスが起動しメールを処理します。
そのため、処理能力以上の大量のメールを送受信している環境においては、Windowsがデスクトップヒープ領域の空き容量が少なくなり、送受信のタイミングで上記のアプリケーションエラーが発生する場合があります。
特に、メール配送専用のスクリプトやアプリケーションから短時間に大量のメール配信を行っている場合に発生します。
本エラーが発生した場合、ポップアップメッセージを消すまでプロセスの開放が行われず、最終的にはSendmailの処理が停止します。

[エラー発生の抑制処置]
なお、根本的な解決にはなりませんが、アプリケーションエラーの発生をある程度抑制する処置として、Sendmailで処理するメール数を制御する方法があります。
既定ではSendmailのプロセス数は無制限に起動する設定となっているため、大量に送受信が行われる環境においては、以下に示すパラメータによってプロセスの起動数を制限する必要があります。

----------------------------------------------------------------------
1. 現在使用している.m4ファイルを読み込み、詳細設定画面を表示します。
2. [環境]-[サービス設定]をクリックします。
3. [接続レート・スロットル(CONNECTION_RATE_THROTTLE)]を設定します。この値は1秒あたりの接続数を設定します。
4. [子プロセスの最大数(MAX_DAEMON_CHILDREN)]を設定します。許容される子プロセスの最大数を制限します。
5. [検索]をクリックし、[検索オプション]からMAX_QUEUE_CHILDRENと入力し、検索します。
6. [最大キュー子プロセス数(MAX_QUEUE_CHILDREN)]を設定します。
各パラメータの設定比率は
子プロセスの最大数:接続レートスロットル:最大キュー子プロセス数=1:1:1
という比率で設定します。
7. 画面下の「適用」ボタンをクリックし、設定を .m4 に反映させます。
8. 画面上の「展開」ボタンをクリックし、設定の展開を実施します。
----------------------------------------------------------------------

なお、平常時は「子プロセスの最大数」「最大キュー子プロセス数」のパラメータで指定された値+2までしかプロセス数は上がりません。しかしながら、Sendmailは処理を分割するために、一時的にwork_groupという単位で親プロセスを立ち上げ、
さらに子プロセスを作り実際のキュー処理を行わせています。
そのため、持続的に大量のメール(数千通〜数万通)を処理し続ける場合には、「子プロセスの最大数」と「最大キュー子プロセス数」のパラメータでもプロセス数を完全に制限することはできません。
従って、根本的な解決策にはなりませんがある程度の抑制効果にはなります。

また、レジストリの変更が可能な場合は、下記の手順にて共有メモリのリソースを拡張することをお勧めしております。
----------------------------------------------------------------------
レジストリエディタにて

HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\SessionManager\SubSystems\Windows


SharedSection=1024,3072
を、
SharedSection=1024,3072,4096

へと変更します。

SharedSection=1024,3072

については、

SharedSection=1024,3072,512,512

のようになっている場合もございますが、その際は

SharedSection=1024,3072,4096,512

のように3番目の数字が変更対象となります。
----------------------------------------------------------------------

レジストリ変更後は、OSを再起動してください。
レジストリの改変はシステム全体に影響を及ぼしますため、作業前にはバックアップを取得いただき、十分ご注意の上での作業をお願いします。

これにより、sendmail.exe エラーの原因である共有メモリ(デスクトップヒープ)の値の不足を解消し、より多くのプロセスを生成可能とします。
4096 であれば、100個以上のプロセスを生成することが可能となり、sendmail.exe エラーが発生することはほぼなくなると思われます。

起動可能プロセス数を50〜100程度とした上でレジストリの拡張を実施することで、プロセスが無制限に生成されること防止した上で、エラーの発生も抑止することが可能となります。

[データ修正日:2011/11/8 ]

[データ登録日:2006/10/10 ]

<ひとつ戻る    <<カテゴリ選択画面へ