WebLogic障害後にサーバーが再起動しない
ノード障害の後、WebLogicサーバーの起動に失敗します。
WebLogicサービス・ログには、次のようなエラー・メッセージが表示されます。
java.io.IOException: Error from fcntl() for file locking, Resource temporarily unavailable, errno=11
原因1: NFSv3サーバーにロック・リース機能が含まれていないため、ロック状態は格納されず、ノード障害後にロックを解放できません。
解決策1:ファイル・ロックの削除をリクエストします。詳細については、Removing File Locks from a Host that is No Longer Availableを参照してください。
原因2: NFSv3ロックに必要なrpc-statd
サービスが、サーバー障害後に異常な状態になっている場合があります。これは、fcntl
モジュールを使用してサンプル・ロック・テストを実行することで検証できます。例:
$python3
>>> import fcntl
>>> f = open('/fss/path/testfile.txt', 'r') #Open an existing file as read mode (do not use 'w')
>>> fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB) #Throws "no lock available" error.
>>> exit()
解決策2: rpc-statd
サービスを再起動します。
-
インスタンスでターミナル・ウィンドウを開き、rootユーザーとして次のコマンドを使用します:
$sudo systemctl status rpc-statd $sudo systemctl stop rpc-statd $sudo systemctl start rpc-statd $sudo systemctl status rpc-statd
fcntl
サンプル・ロック・テストがエラーなしで完了することを確認します。- WebLogicサーバーを起動します。
原因3: NFSv3はロック所有者を追跡しません。そのため、ロック所有者が失敗した場合、NFSはロックを無期限に保持します。ノード障害の後、WebLogicの再起動試行ではロックを取得できません。
解決策3:これは一般的なNFSv3の制限です。WebLogicのドキュメントには、即時緩和と長期設計に関する考慮事項が記載されています。詳細については、Verifying Server Restart Behaviorを参照してください。