3

これは共有ホスティング環境です。私はサーバーを管理していますが、必ずしもコンテンツを管理しているわけではありません。Perl スクリプトを使用するクライアントがあり、時々制御不能になり、プロセスが強制終了されるまでプロセッサの 50% を消費します。

ASP スクリプトを使用すると、スクリプトの実行時間を制限できます。IIS は、たとえば 90 秒後にスクリプトをシャットダウンします。Perl スクリプトは cgi プロセスとして実行されているため (実際には外部プロセスを起動してスクリプトを実行するため)、これは Perl スクリプトでは機能しません。

同様に、消費されているリソース (プロセッサ) は WP 自体ではなく子プロセスによって食い尽くされているため、ワーカー プロセスでの過剰なリソース消費を探す手法では、おそらくこれは検出されません。

実行時間が長すぎる Perl スクリプト (またはその他の cgi タイプのプロセス) を IIS で中止させる方法はありますか? どのように??

4

4 に答える 4

1

ASPスクリプトのタイムアウトは、すべてのスクリプト言語に適用されます。スクリプトがASPページで実行されている場合、スクリプトのタイムアウトにより問題のあるページが閉じられます。

于 2008-09-16T20:35:35.230 に答える
1

UNIX スタイルのシステムでは、ALRM イベントをトラップするシグナル ハンドラーを使用し、アラーム機能を使用してタイマーを開始してから、タイムアウトになる可能性があるアクションを開始します。アクションが完了したら、alarm(0) を使用してアラームをオフにし、通常どおり終了します。それ以外の場合は、シグナル ハンドラーがそれを取得して、すべてを正常に終了する必要があります。

私はしばらく Windows で perl を使っていませんでした。プラットフォームでシグナルがサポートされているかどうか、またはサポートされている範囲を確認するには、perl のドキュメントを確認する必要があります。

シグナル処理と、alarm() を使用したこの種の自己破壊プログラミングの詳細については、Perl クックブックを参照してください。これは、別の投稿から持ち上げて少し変更した簡単な例です。

eval {
    # Create signal handler and make it local so it falls out of scope
    # outside the eval block
    local $SIG{ALRM} = sub {
        print "Print this if we time out, then die.\n";
        die "alarm\n";
    };

    # Set the alarm, take your chance running the routine, and turn off
    # the alarm if it completes.
    alarm(90);
    routine_that_might_take_a_while();
    alarm(0);
};
于 2008-09-16T19:12:47.630 に答える
1

これに関する更新...

この特定のスクリプトには明らかに少しバグがあり、Googlebot には「ボタンを押して」狂わせるという驚くべき能力があることが判明しました。このスクリプトは、カレンダーを行う古い商用アプリケーションです。どうやら「来月」と「前月」のリンクが表示され、「来月」を何度もたどると崖っぷちに落ちてしまうらしい。ただし、結果のページにはまだ「翌月」リンクが含まれています。Googlebot は継続的にスクリプトを打ち負かし、プロセッサを噛み砕いていました。

不思議なことに、Disallow: / を指定して robots.txt を追加しても問題は解決しませんでした。Googlebot が既にスクリプトを取得していて手放そうとしなかったか、単に robots.txt を無視していたかのどちらかです。

とにかく、Microsoft の Process Explorer ( http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ) は、perl.exe プロセスの環境をより詳細に確認できるので、非常に役立ちました。その結果、問題の原因は Googlebot であることがわかりました。

そのことを知って (そして robots.txt では問題が解決しないと判断すると)、IIS を直接使用して *.googlebot.com からこのサイトへのすべてのトラフィックをブロックすることができました。 Google がこのコンテンツをインデックスに登録しているかどうかは気にしません。

みんなが投稿した他のアイデアに感謝します!

エリック・ロングマン

于 2008-10-01T02:30:30.967 に答える
0

「iis cpu limit」をグーグルで検索すると、次のヒットが表示されます。

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/38fb0130-b14b-48d5-a0a2-05ca131cf4f2.mspx?mfr=true

「CPU 監視機能は、大量の CPU 時間を消費するワーカー プロセスを監視し、自動的にシャットダウンします。CPU 監視は、個々のアプリケーション プールに対して有効になっています。」

http://technet.microsoft.com/en-us/library/cc728189.aspx

「CPU 監視を使用すると、ワーカー プロセスの CPU 使用率を監視し、必要に応じて大量の CPU 時間を消費するワーカー プロセスをシャットダウンできます。CPU 監視は、ワーカー プロセス分離モードでのみ使用できます。」

于 2008-09-16T20:30:20.063 に答える