
私はSolaris 10を使用しており、サーバーのcrontabに複数のcronjobを追加しました。
現在私のcrontabには30のcronjobがあります。
クローンジョブが必要です8時間他のクローン操作を完了するには、次のものが必要です。5時間完了し、残りは一般的なcronjobです(最大30分かかります)。
本番サーバーだからサーバーパフォーマンスが心配ですね。
- 私のサーバーのパフォーマンスとはどのような関係がありますか?
- cronjobの数に上限はありますか?
答え1
短い答え:はい。
より長い答え:
- に依存する何cronjobがやるいつ夜に(またはサーバーの用途に応じてオフィスに誰もいないとき)、計算量の多い(パフォーマンス低下)タスクを実行しても問題が発生しないように(もちろん、勤務時間前に完了する場合)そうします。
- 制限がある場合(不明)30よりもはるかに多い可能性があります。とにかくあまりにも多くのcronjobを持つことは少し奇妙に見えますが(私が間違っている場合は誰かを修正してください)、より多くの情報がなければ、より良い解決策があるかどうかは言えません。
(これは答えに対する最初の近似値だけであり、この一般性では完全に答えることができるか疑問です。)
また、読むことができますnice
(Solarisに存在するかどうかはわかりません)。これSolaris リソース管理 (1)、(2)実行する操作の種類によっては便利です。
答え2
もちろん、クローン操作は何らかの方法でパフォーマンスに影響を与えます。クローン作業に8時間かかったら、おそらく何か大きなことをしているのでしょう。しかし、何?ここに問題があります。
リソースを競い合う複数のバックグラウンドタスクがある場合は、完了するまでに時間がかかります。たとえば、8時間ジョブと5時間ジョブが別々に実行されている場合、両方のジョブを同時に実行すると同じリソース(ディスクI / O、ネットワーク帯域幅、RAMなど)が競合します。対照的に、異なるリソースを使用している場合(たとえば、1つはCPUにバインドされ、もう1つはディスクにバインドされている)、真夜中に開始すると午前8時に完了する可能性があります。
したがって、分散型集約的タスクのルールは、リソースを広く割り当てることです。各タスクに必要な事項(ディスクI / O、ネットワーク帯域幅、RAM、CPUなど)を特定し、リソースの競合がないようにスケジュールを作成します。たとえば、RAM が 4 GB で、ジョブ #1 に 2 GB が必要で、ジョブ #2 とジョブ #3 にそれぞれ 2 GB が必要で、通常のサーバー操作に 2 GB が必要な場合、ジョブ #1 がジョブ #2 と同時に実行されないようにする必要があります。します。と#3がありますが、#2と#3を同時に実行しても大丈夫です。通常、異なるディスクプールにアクセスする複数のタスクがない場合は、ディスク集約的なタスクを一度に1つずつ実行する必要があります。 CPUはオーバーヘッドなしで共有できます。フロントエンドを操作するために少し空き容量が残っていることを確認してください(参考になるnice
場合があります)。