sys_propertiesレコードで「キャッシュを無視」を使用する場合Issue サマリー: ServiceNow インスタンスで 新しいシステムプロパティを作成 (Glideプロパティ)する場合、ほとんどの場合「sys_properties」レコードの「ignore cache」を「true」に設定する必要があります。[ignore cache] が false に設定されているプロパティ値が変更されると、Glide システムキャッシュ全体のフラッシュがトリガーされ、キャッシュが再ビルドされるときにシステム全体のパフォーマンスが低下する可能性があります。 Glideプロパティの値は頻繁に変更しないでください。一般的な目安として、「ignore cache」が「true」に設定されている場合は、月に1回以上変更しないでください。「ignore cache」が「false」に設定されている場合は、1時間に1回以上変更しないでください。 注:この記事は、システムプロパティの動作を説明し、新しいシステムプロパティの作成時またはカスタムプロパティの更新時にお客様に指示するために書かれています。一方、標準プロパティの「ignore cache」フィールドは、ServiceNowから特に指示がない限り変更しないでください。Symptoms「ignore cache」が false に設定されている場合は、Glide プロパティを変更すると、システム全体のキャッシュがフラッシュされます。これにより、通常は 5 分から 30 分程度の軽度のパフォーマンス低下が発生します。ごくまれに、平均トランザクション応答時間が 2 倍、あるいは 3 倍に増加するなど、深刻なパフォーマンス低下が発生する場合があります。このパフォーマンス低下は、Update Set を適用した場合と非常によく似ています。「ignore cache」が false に設定されている Glide プロパティを変更する場合は、Update Set を適用する場合と同様に、十分な注意が必要です。 「ignore cache」が false に設定されている場合に、Glide プロパティを繰り返し変更すると(たとえば 10 分間に 10 回)、深刻なパフォーマンス低下が発生します。 「ignore cache」が true に設定されている場合は、Glide プロパティを変更するとキャッシュがフラッシュされますが、フラッシュされるのは Glide プロパティ固有のキャッシュのみです。このキャッシュフラッシュの影響はシステム全体のキャッシュフラッシュほど大きくありませんが、頻繁に行うと依然として大幅なパフォーマンス低下につながる可能性があります。例えば、あるお客様はGlide Propertyの値を1分間に約15回変更していたため、システム全体で20~30%のレスポンス低下が継続的に発生していました。また別のお客様はGlide Propertyの値を1分間に1,000回変更していたため、システム全体が停止しました。ReleaseすべてのリリースCauseこの原因を理解するには、ServiceNow がクラスター化されたプラットフォームであり、複数のノードまたは JVM が連携して動作し、インターネット上では ServiceNow の単一の「インスタンス」 (acme.service-now.com など) のように見えることを理解する必要があります。プロパティはノードメモリにキャッシュされるため、クラスター内の各ノードには各プロパティの独自のコピーがあります。これは、一般的にアクセスされるプロパティ値のデータベース呼び出しを回避する方法です。1 つのノードでプロパティが変更されると、他のノードはプロパティ キャッシュをダンプし、データベースからすべてのプロパティの新しい値を再度取得します。これは、システムパフォーマンスにまったく些細な影響を与えます。 この部分は、[ignore_cache] フィールドが true に設定されているかどうかに関係なく発生します。 ただし、ignore_cache が false に設定されている場合 (Rome リリースまではこれがデフォルト値でした)、プロパティに関連する特定のキャッシュがフラッシュされるだけでなく Glide システムキャッシュ全体もフラッシュされます。もう一度言わせてください、そして、どうか、二重否定に注意を払ってください。プロパティがキャッシュを無視しないに設定されている場合は、Glide システムキャッシュ全体をフラッシュするように指示していることになります。これが、パフォーマンスへの重大な影響を引き起こす原因です。では、なぜそんなことをするのでしょうか?このキャッシュのフラッシュが行われる理由は、変更されたばかりのプロパティの古い値に関連している可能性のある他のキャッシュの依存関係や古い値を確実にフラッシュするためです。 たとえば、ページのレンダリングされた HTML をセッションごとにサーバー側に保存する UI キャッシュがあるとします。このようなキャッシュの目的は、同じユーザーに対して同じページを何度もレンダリングすることを避けることです。さらに、HTML のレンダリング方法が、変更されたプロパティの値に依存するとします。この UI キャッシュをフラッシュしないと、プロパティの古い値がレンダリングされた HTML で引き続き使用され、関連するプロパティの変更に基づいて UI に表示されると予想される変更は、ユーザーが新しいセッションを開始するまで (つまり、ログアウトして再度ログインするまで) UI に反映されません。このシナリオでは、キャッシュのフラッシュを無視しないように、キャッシュの無視が false に設定されていることを確認し、依存キャッシュも確実にフラッシュされるようにします。 前述のように、プロパティの 'ignore cache' が true に設定されている場合でも、インスタンスに多少の影響があります。これは、プロパティが変更されるたびに、'ignore cache' が true に設定されている場合でも、システム内のすべてのプロパティをデータベースから再読み込みする必要があるためです。データベース内のプロパティの数によっては、それらのプロパティを読み込むクエリが完了するまでに数百ミリ秒かかり、結果をループしてキャッシュを更新するのにも数百ミリ秒かかる場合があります。プロパティ キャッシュが再構築されている間、プロパティにアクセスしようとする他のスレッドはフリーズされます。このため、'ignore_cache' が true に設定されている場合でも、頻繁に変更される値を格納するために Glide Properties を使用することはお勧めしません。1 日に複数回変更される可能性のある値は、おそらく他のテーブルに格納する必要があります。Resolutionカスタムプロパティの場合は、ignore_cache = true に設定します。 頻繁に変更される場合は、Glide プロパティ を使用しないでください。