質問
私は、タスクを実行する必要があるWindowsサービスを書いて30日ごとに+(つまり、中央サーバに接続します)。サービスは、クライアントマシン2000+上で実行されますので、ランダム性がそれらを平準ことを意図しているので、サーバが過負荷にされません。
何がこれを行うための最善の方法だろうか?現在、私は25の間のランダムな時間選ぶ - 。タスクが最後に実行し、それを使用するので、35日の
誰もがより良い方法がありますか?より良い方法はありますか?
解決
あなたが私にはかなり良い方法のような音を持っているもの。あなたはが、それはややそれは25日後に、この時間を実行した場合、それはあなたが私が何を意味するか見た場合、30日以上で、次回を実行する可能性が高くなりますように。
バイアスすることをお勧めします<全角>別の方法としては、適切な「スロット」のための中央サーバー求めることができるということである - 。それは(すべては自分自身を振る舞うと仮定して)自分自身の過負荷を避けることができ、そのように
他のヒント
私は確かにジョンが彼の第二段落に示唆して何をすべきか、そしてサーバに次に実行するタイミングを決定するためのロジックを移動します。この方法は、あなたが効果的にあなたのコントロールでクライアントを持っている、とあなた2000+マシンにアプリケーションを再配布することなく、あなたのアルゴリズムに変更を加えることができます。
サーバがクライアントに伝えることができますか?その場合、サーバは、均等に時間間隔全体に分散されている「スケジュールされた接続スロット」のプールを持つことができます。サーバはそれが好きなようにこれらを配布し、これにも広がりを確保することができます。
は十分に良いようです。あなたは(ランダムにいくつかが選択されていない飽きないかもしれ選択などによっていくつかの時点で使用されます、毎日確実にするために!)それらが使用されるようなリストから毎日削除したい場合があります。
長期平準化の上に、あなたはそれが後で再試行するクライアントを指示する能力の近くにある場合、サーバーはステータスコードを返す可能性があります。その時点で、あなただけの25〜35日ではなく、その時間を遅らせたりできます。