PowerScale:9.5以降のPowerScale OneFSでのJWTとPAPIのタイムアウト
概要: JWTとPAPIのタイムアウトは、9.5以降のPowerScale OneFSで大量のWeb、API、PAPI、JWTアクションが発生すると発生する可能性があります。これは、JWTプロセスコアリングとして現れる場合があります。
現象
これは、OneFS 9.5以降の影響に適用されます。ただし、OneFSのまだ古いバージョンの中には、これらの状態が表示される場合があります。
このKBのコマンドの一部は、9.6(9.5ではない)より古いバージョンのOneFSでは機能せず 、バックポートされる可能性はほとんどありません。最新のターゲット コード レベルへのアップグレードを検討してください。
OneFSの進化に伴い、基盤となるAPIシステムは定期的にアップデートされます。9.5 以降、高レベルの頻繁または同時の API/Web 認証セッションを含む特定のワークフローおよびユースケースでは、接続、PAPI、API、および JWT 関連のプロセス コアリングと重複する可能性のある同様のタイムアウトのレートが高くなる可能性があります。JWTは、最新のセキュリティモデルで要求されるAPI認証用のCSRFトークンの管理に関与するシステムの1つです
コアがある場合は、次のように表示されます。
Powerscale-OneFS-27# isi_for_array -s ls -lah /var/crash/ | grep -i jwt
Powerscale-OneFS-12: -rw-rw---- 1 root daemon 167M Jul 14 23:39 jwt.core.gz
Powerscale-OneFS-13: -rw-rw---- 1 root daemon 214M Jul 15 12:19 jwt.core.gz
Powerscale-OneFS-17: -rw-rw---- 1 root daemon 181M Jul 15 14:03 jwt.core.gz
Powerscale-OneFS-21: -rw-rw---- 1 root daemon 172M Jul 24 14:20 jwt.core.gz
Powerscale-OneFS-22: -rw-rw---- 1 root daemon 37M Jul 24 14:23 jwt.core.gz
Powerscale-OneFS-27: -rw-rw---- 1 root daemon 165M Jul 24 10:08 jwt.core.gz
Powerscale-OneFS-28: -rw-rw---- 1 root daemon 181M Jul 24 13:35 jwt.core.gz
Powerscale-OneFS-29: -rw-rw---- 1 root daemon 181M Jul 24 13:10 jwt.core.gz
これには、次のような同様のログ エラーが含まれる場合があります。
$ cat Powerscale-OneFS-*/varlog.tar/log/jwt.log | grep 2024-07 | less
2024-07-15T13:00:22.459910-05:00 <30.5> Powerscale-OneFS-66(id71) jwt[83869]: Logging started
2024-07-15T13:25:54.388061-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to update active session user index. errno: 12 - Cannot allocate memory
2024-07-15T13:25:54.495084-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to add session: 0801b74c-1abf-4b23-89a0-1e9daf429559 to active session user index identity: SID:S-1-22-1-0, zone: 1. STATUS_INVALID_PARAMETER (0xC000000D)
2024-07-15T14:05:56.869968-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to update active session user index. errno: 12 - Cannot allocate memory
2024-07-15T14:05:57.115920-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to add session: 08c173f1-60de-472d-a89d-1d6af2462a28 to active session user index identity: SID:S-1-22-1-0, zone: 1. STATUS_INVALID_PARAMETER (0xC000000D)
2024-07-15T14:28:28.441603-05:00 <30.5> Powerscale-OneFS-66(id71) jwt[2077]: Logging started
2024-07-15T14:52:08.794040-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[2077]: [jwt] Failed to update active session user index. errno: 12 - Cannot allocate memory
2024-07-15T14:52:09.043575-05:00 <30.3> Powerscale-OneFS-66 syslogd: last message repeated 1 times
2024-07-15T14:52:09.070500-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[2077]: [jwt] Failed to add session: a1164a8f-cd68-45bf-bc07-5d7beefe7ba3 to active session user index identity: SID:S-1-22-1-0, zone: 1. STATUS_INVALID_PARAMETER (0xC000000D)
ただし、この問題は JWT コアに限定されるわけではありません。この問題は9.5以前に存在する可能性がありますが、回避策と修正は9.6 OneFS以降で利用できます。
9.6以降のOneFSに関するこのKBの回避策により、関連するOneFS API関連のタイムアウトの問題が軽減される場合があります。原因
解決方法
これらの回避策は、OneFS 9.6以降にのみ適用されます。
ライフサイクル終了ではない下位バージョンの場合は、サポートに直接お問い合わせください。追求すべきオプションはあるかもしれませんが、OneFSをアップグレードするか、API/サード パーティー ベンダーと協力して、APIベースのワークロードをより多くのノードに、より多くの時間をかけて、より効率的に分散させる必要があります
JWTのvmemory制限への対応:
JWT プロセスの現在の vmlimit は 1 GB です。2 GBに設定して、役立つかどうかを確認できます。JWT の 1 GB 制限の表示:
9610-1# limits -P $(pgrep jwt) -B
Resource limits (current):
cputime infinity secs
filesize infinity kB
datasize 33554432 kB
stacksize 524288 kB
coredumpsize infinity kB
memoryuse infinity kB
memorylocked 131072 kB
maxprocesses 7390
openfiles 16384
sbsize infinity bytes
vmemoryuse 1048576 kB <----
pseudo-terminals infinity
swapuse infinity kB
kqueues infinity
umtxp infinity
代わりに2 GBに設定するには、次のようにします。
# isi_for_array -s 'limits -P $(pgrep jwt) -v 2g'
新しい制限を確認するには、次の手順を実行します。
# isi_for_array -s 'limits -P $(pgrep jwt) -B' | grep vmemoryuse
9610-1: vmemoryuse 2097152 kB
9610-2: vmemoryuse 2097152 kB
9610-3: vmemoryuse 2097152 kB
9610-4: vmemoryuse 2097152 kB
9610-5: vmemoryuse 2097152 kB
9610-6: vmemoryuse 2097152 kB
Isilonの情報を使用して、cronに追加して永続的なものにすることができます 「crontabを編集する方法(英語)」
これをcronするには、このコマンドを妥当な間隔で実行するように設定して、数時間ごとに実行するcronなど、クラスターまたはノードの再起動後にリセットされるようにする必要があります。
isi_for_array -s 'limits -P $(pgrep jwt) -v 2g'
cronの実装に関する質問がある場合は、Dellのシステム エンジニアリング チームにお問い合わせください。その後、技術的な問題が発生した場合は、 テクニカル サポートにご連絡ください
PAPIコンカレント制限への対応:
操作に影響を与える可能性のあるもう1つの要因は、同時に許可されるPAPI/APIセッションの数です。一部の最新のサード パーティー ベンダーは、APIリクエストのためにストレージ プラットフォームに大量のアクティビティを送信する場合があります。APIを使用する独自の内部操作と組み合わせると、セッションの最大数を超えることがあります。デフォルトの最大制限は80で、最小下限は40です。
9610-1# isi_gconfig -t papi | grep -i child
proc.auto_configure_child_limit (bool) = true
proc.child_limit (int) = 80
proc.child_limit_ceiling (int) = 80
proc.child_limit_floor (int) = 40
proc.child_limit_extension (int) = 0
制限と上限は、テスト/修復のために次のように増やすことができます。
9610-1# isi_gconfig -t papi proc.child_limit=100; isi_gconfig -t papi proc.child_limit_ceiling=100
9610-1# isi_gconfig -t papi | grep child
proc.auto_configure_child_limit (bool) = true
proc.child_limit (int) = 100
proc.child_limit_ceiling (int) = 100
proc.child_limit_floor (int) = 40
proc.child_limit_extension (int) = 0
上記のgconfigは、すべてのノードのグローバル設定であることに注意してください。ローカル オプションはありません
この値を増やすと、2つのストレージ クラスターが同一のパフォーマンス プロファイルを持つことがない可能性があるため、関連システムのコストの増加や特定の環境に固有の理論上のパフォーマンス インパクトなど、予期しない影響が生じる可能性があります。このような考慮事項は、通常、事前に予測することは不可能であり、事後的にしか対応できません
これに関する質問については、SEまたはサポートにお問い合わせください。