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サービスを再起動します。

  1. インスタンスでターミナル・ウィンドウを開き、rootユーザーとして次のコマンドを使用します:

    $sudo systemctl status rpc-statd 
    $sudo systemctl stop rpc-statd 
    $sudo systemctl start rpc-statd 
    $sudo systemctl status rpc-statd 
  2. fcntlサンプル・ロック・テストがエラーなしで完了することを確認します。
  3. WebLogicサーバーを起動します。

原因3: NFSv3はロック所有者を追跡しません。そのため、ロック所有者が失敗した場合、NFSはロックを無期限に保持します。ノード障害の後、WebLogicの再起動試行ではロックを取得できません。

解決策3:これは一般的なNFSv3の制限です。WebLogicのドキュメントには、即時緩和と長期設計に関する考慮事項が記載されています。詳細については、Verifying Server Restart Behaviorを参照してください。