スケジュールされたタスクが重すぎるので、私の質問は、スケジュールされたタスクが重すぎると、coldfusion サーバーがダウンする可能性がありますか? スケジュールされたタスクがループ制限時間を超えたことがあることを意味します。とにかく、同じことを行う他の方法を探していますが、重すぎません。
2 に答える
スケジュールされたタスクは、実際には、通常の CF ページ要求の自動呼び出しにすぎません。つまり、スケジュールされたタスクの URL をブラウザ ウィンドウに手動で表示すると、そこでもタイムアウトになるのでしょうか?
スケジュールされたタスクがサーバーによって呼び出されて実行されることに注意してください。これは、実際のユーザーとは異なるセッション、CGI、リクエスト、およびフォームのスコープ値を持つことができることを意味します。ただし、CFSETTING タグの requestTimeout 属性を使用して、タイムアウトになる前にページがタスクを完了する必要がある時間を延長できます。requestTimeout 属性は、サーバーから要求が返されない場合、CF がページが応答していないと見なすまでの秒数を表す値を取ります。
ただし、スケジュールされたタスクが実際に何をしているかに大きく依存します。コードを構成要素に分割して処理を高速化する方法はさまざまです。おそらく、ループが何をしているのか (そしてループが行っていることすべてを本当に実行する必要があるのか) を理解することは、開始するのに適した場所です。
考慮すべき点がいくつかあります。
まず、タスクの実行に時間がかかり、現在タイムアウトになっています。ここで調査すべきことがいくつかあります。
- 調査ではありませんが、@coldfusiondevshop の提案に従って
requesttimeout
、そのリクエストに対して を設定できます。<cfsetting>
- コードを監査して、実行にそれほど時間がかからないように別の方法でコーディングできるかどうかを確認できます。通常、タスクとして実行される作業の性質上、これは不可能な場合があります。
- ColdFusion のバージョンによっては (「ColdFusion」だけでなく、常に CF バージョンで質問にタグを付けてください)、強化されたスケジューリング CF10 を利用して、タスクを小さなチャンクに分割し、それらを連鎖させて、タイムアウトする可能性が低くなります。これも常に可能というわけではありませんが、考慮事項です。
考慮すべきもう 1 つのことは、タスク用に別の CF インスタンスを実行する価値があるかどうかです。タスクがタイムアウトするだけでなく、実行中に他のすべての人の処理が遅くなる可能性もあります. あなたはそれをチェックしましたか?単一のタスクの場合、これはおそらくやり過ぎですが、サイトの残りの部分と同じ CF インスタンスでタスクを実行する必要はないことを覚えておくとよいでしょう。 CF インスタンスのリソースに負担をかけるタスクが多数ある場合。
要約すると、 でタイムアウトを増やしてから<cfsetting>
、コードを監査して、パフォーマンスを改善できるかどうかを確認してください。私が言う他のことは、単なる「ボーナスポイント」の提案です.