🚑

Okta連携を実行するたびにサーバーのスレッドが増え続け、再起動に至る問題を修正しました

概要

Okta連携の同期・属性同期・タスク実行などを行うたびにサーバー内部のスレッドが1組ずつ増え、解放されないまま残る問題を修正しました。
修正後は処理が終わるたびにスレッドを解放します。業務アセットの設定を変更する必要はありません。

詳細

Okta連携では、操作のたびにOktaとの通信に使う部品を新しく作っていました。この部品は作るたびに通信用のスレッドを確保しますが、使い終わった後に解放していませんでした。
Okta連携を実行するほどスレッドが積み上がり、上限に達するとサーバーが新しいスレッドを作れずに停止します。CPUやメモリには余裕がある状態でも起きます。
今回の修正で、Okta連携の処理が終わるたびに通信用の部品を閉じ、スレッドを解放するようにしました。
 

修正前後の差異

修正前

Okta連携を実行するたびにスレッドが増え続け、上限に達するとサーバーが停止して再起動していました。
再起動の間は、そのサーバーで処理していた同期やタスクが中断します。
 

修正後

Okta連携の処理が終わるたびにスレッドを解放するため、実行回数に応じてスレッドが増え続けることはなくなります。
処理が途中でエラーになった場合も解放します。

原因・解決方法

Okta連携の操作ごとに作っていた通信用の部品を、どこでも閉じていなかったことが原因です。
業務アセットの処理の終わりに必ず後片付けを呼ぶ仕組みを加え、Okta連携ではそこで通信用の部品を閉じるようにしました。