スクリプト開始オプションの設定
概要 スクリプトを実行する前に、特定のシステムリソースのチェックを実行するようにデバイスを設定します。
サポートされるプラットフォームで、特定のタイプのスクリプトの開始オプションを設定できます。開始オプションを設定すると、デバイスはスクリプトを実行する前に特定のシステムリソースのチェックを実行します。このチェックにより、設定した値に基づいて、システムがスクリプトの実行を開始するか、実行を防止するかを決定します。スクリプト開始オプションを設定することで、システム リソースが限られている場合にデバイスが不可欠なスクリプトのみを実行するようにして、デバイスが重要なネットワーク機能をすべて引き続き実行できるようにします。
スクリプトのシステム メモリ 使用量のしきい値の設定で説明されているように、システムのメモリ使用量に基づいて、スクリプトの実行を防止するための開始オプションを設定できます。
スクリプト開始オプションを設定して、スクリプトが特定の条件下で実行されないようにします。代わりに、デバイスがスクリプトを起動できるようにしてスクリプトの実行を遅くする、または実行する際に一定の制限を超えた場合はスクリプトを停止するには、次のドキュメントを参照してください。
スクリプトのシステム メモリ使用しきい値の設定
システムのメモリ使用量が設定されたしきい値を超えた場合にスクリプトが実行されないようにデバイスを設定できます。たとえば、システム メモリの使用率が 75% を超える場合に、特にリソース集約型のスクリプトやスクリプトの種類の実行を防止することができます。または、特定のスクリプトがデバイスの操作で重要な役割を果たす場合は、特定のスクリプトのシステム メモリ使用率のしきい値を高く設定するか、しきい値を設定して、その時点でシステムのリソースが限られている場合でもデバイスがスクリプトを実行できるようにします。
ステートメントを start start-options mem-factor 設定して、スクリプトが実行されないシステム メモリ使用しきい値を定義します。op、イベント、SNMP、Juniper Extension Toolkit(JET)スクリプトのしきい値を定義できます。ステートメントは、個々のスクリプトまたは特定のタイプのすべてのスクリプトに適用できます。op スクリプトなど、スクリプトの種類にステートメントを設定すると、その型のすべての Python、SLAX、XSLT スクリプトにステートメントが適用されます。スクリプトタイプに異なるしきい値を定義し、同じタイプの個別のスクリプトを定義した場合、個々のスクリプトの設定が優先されます。
Junos デバイスは、 コマンドを使用して実行されるリモート op スクリプトのスクリプト開始オプションを op url 適用しません。スクリプト開始オプションは、ローカル op スクリプトにのみ適用されます。
JET アプリケーションの場合、 daemonize および mem-factor ステートメントは相互に排他的です。JET アプリケーションの設定に ステートメントが daemonize 含まれている場合、その個々のスクリプトに対しても、すべての JET スクリプトに対してグローバルにステートメントを設定 mem-factor することもできません。両方のステートメントを設定し、設定をコミットすると、デバイスはコミットエラーを発行します。
そのスクリプトまたはスクリプトのタイプに設定された ステートメントを mem-factor 持つスクリプトを実行すると、デバイスは現在のシステム メモリ使用率を設定された mem-factor 値と比較します。システム メモリの使用量が設定したしきい値よりも低い場合、スクリプトは正常に実行されます。システム メモリの使用量が設定したしきい値を超えた場合、デバイスはスクリプトを実行せず、その結果としてシステム ログ メッセージを生成します。個々のスクリプトまたはスクリプトタイプのいずれかに を mem-factor statement 設定しない場合、システムはシステムメモリ使用率のチェックを実行せず、スクリプトを通常どおり実行します。
Junosデバイスは、オペレーティングシステムに応じて、システムメモリの使用量を異なる方法で計算します。Junos OS は、次の計算を使用してシステム メモリの使用量を決定します。
current memory usage = (Total memory – (Cache memory + Free memory + Inactive Memory))*100 / Total memory
たとえば、Junos OS を実行するデバイスで次 show system memory のコマンド出力を考えてみましょう。
user@host> show system memory
System memory usage distribution:
Total memory: 4135380 Kbytes (100%)
Reserved memory: 137172 Kbytes ( 3%)
Wired memory: 334964 Kbytes ( 8%)
Active memory: 772468 Kbytes ( 18%)
Inactive memory: 2738480 Kbytes ( 66%)
Cache memory: 0 Kbytes ( 0%)
Free memory: 261964 Kbytes ( 6%)
...
この場合、現在のシステム メモリの使用量は約 27% です。スクリプトを呼び出すと、この使用量がそのスクリプトに設定された mem-factor 値を超えた場合、デバイスはスクリプトを実行しません。デバイスは、個々のスクリプトに ステートメントを mem-factor 設定しない場合にのみ、使用量をスクリプトタイプの mem-factor 値と比較します。
Junos OS Evolvedには、コマンドの XML 出力で show system memory 直接システム メモリの使用量が含まれています。
user@host-re0 show system memory node re0 | display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/23.1R1/junos">
<system-memory-information>
<system-memory-summary-information>
<system-memory-total>16062004</system-memory-total>
<system-memory-total-percent>100%</system-memory-total-percent>
<system-memory-used>3540932</system-memory-used>
<system-memory-used-percent>22%</system-memory-used-percent>
...
ステートメントが設定されているスクリプトを mem-factor 呼び出すと、デバイスは重大度レベル INFO を持つCSCRIPT_START_OPTIONS_MEM_FACTORシステム ログ メッセージをログに記録します。
Oct 11 11:39:07 host cscript[93413]: CSCRIPT_START_OPTIONS_MEM_FACTOR: Start-options is set with mem-factor '70'
現在のシステム メモリの使用率が設定したしきい値を超えたためにデバイスがスクリプトを実行できないようにすると、cscript プロセスはシステム ログ メッセージをログ ファイルに記録します。CLI は、スクリプトが停止したことを示す警告やエラーは発行しません。デバイスは、CSCRIPT_START_OPTIONS_SYSTEM_MEMを記録し、システムログメッセージCSCRIPT_START_OPTIONS_WARNINGし、このイベントの重大度レベル警告を記録します。
user@host> show log messages | match cscript Oct 11 11:39:07 host cscript[93413]: CSCRIPT_START_OPTIONS_SYSTEM_MEM: Start-options System Memory Usage Statistics: Total memory:'4137428' Free memory:'132936' Oct 11 11:39:07 host cscript[93413]: CSCRIPT_START_OPTIONS_WARNING: Start-options System Memory Usage '74' exceeds the mem-factor '70', aborting the script 'bgp-neighbors.slax' execution
CLI は、デバイスがスクリプトの実行を停止するかどうかを示しません。たとえば、この場合、op スクリプトは出力を発行せず、SNMP スクリプトはエラーを No such instance 返し、JET スクリプトは拡張サービス アプリケーションが開始されたことを示すメッセージを出力します。デバイスがスクリプトの実行を妨げていることを確認するには、常にシステム ログ メッセージを参照する必要があります。
個々のスクリプトの開始オプションを設定する
個々のスクリプトのスクリプト開始オプションを設定するには:
特定のタイプのすべてのスクリプトに開始オプションを設定する
特定のタイプのすべてのスクリプトのスクリプト開始オプションを設定するには: