WebLogic Le serveur ne redémarre pas après l'échec

En cas de défaillance d'un noeud, le serveur WebLogic ne démarre pas.

Le journal du service WebLogic contient un message d'erreur semblable au suivant :

java.io.IOException: Error from fcntl() for file locking, Resource temporarily unavailable, errno=11

Cause 1 : les serveurs NFSv3 n'incluent pas de fonctionnalité de verrouillage de bail. Les états de verrouillage ne sont donc pas stockés et les verrous ne peuvent pas être libérés après l'échec du noeud.

Solution 1 : demandez la suppression des verrous de fichier. Pour plus d'informations, reportez-vous à la section Removing File Locks from a Host that is No Longer Available.

Cause 2 : parfois, le service rpc-statd, nécessaire pour le verrouillage NFSv3, est dans un état en mauvais état après la panne du serveur. Cela peut être vérifié en exécutant un exemple de test de verrouillage à l'aide du module fcntl. Par exemple :

$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()

Solution 2 : redémarrez le service rpc-statd.

  1. Ouvrez une fenêtre de terminal sur l'instance et utilisez les commandes suivantes en tant qu'utilisateur root :

    $sudo systemctl status rpc-statd 
    $sudo systemctl stop rpc-statd 
    $sudo systemctl start rpc-statd 
    $sudo systemctl status rpc-statd 
  2. Vérifiez que l'exemple de test de verrouillage fcntl se termine sans erreur.
  3. Démarrez le serveur WebLogic.

Cause 3 : NFSv3 ne suit pas les propriétaires de verrou. Ainsi, NFS conserve le verrou indéfiniment en cas d'échec d'un propriétaire de verrou. Après l'échec d'un noeud, une tentative de redémarrage WebLogic ne peut pas acquérir de verrou.

Solution 3 : il s'agit d'une limitation générale de NFSv3. Des considérations d'atténuation immédiate et de conception à long terme sont fournies dans la documentation de WebLogic. Pour plus d'informations, reportez-vous à la section Verifying Server Restart Behavior.