El servidor WebLogic no se reinicia después de un fallo
Después de un fallo de nodo, el servidor WebLogic no se puede iniciar.
El log del servicio WebLogic contiene un mensaje de error similar al siguiente:
java.io.IOException: Error from fcntl() for file locking, Resource temporarily unavailable, errno=11
Causa 1: los servidores NFSv3 no incluyen una función de concesión de bloqueo, por lo que los estados de bloqueo no se almacenan y los bloqueos no se pueden liberar después del fallo del nodo.
Solución 1: solicite la eliminación de los bloqueos de archivos. Para obtener más información, consulte Removing File Locks from a Host that is No Longer Available.
Causa 2: a veces, el servicio rpc-statd
, que es necesario para el bloqueo NFSv3, está en un estado en mal estado después del fallo del servidor. Esto se puede verificar ejecutando una prueba de bloqueo de ejemplo mediante el módulo fcntl
. Por ejemplo:
$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()
Solución 2: reinicie el servicio rpc-statd
.
-
Abra una ventana de terminal en la instancia y utilice los siguientes comandos como usuario raíz:
$sudo systemctl status rpc-statd $sudo systemctl stop rpc-statd $sudo systemctl start rpc-statd $sudo systemctl status rpc-statd
- Verifique que la prueba de bloqueo de ejemplo
fcntl
se complete sin errores. - Iniciar el servidor WebLogic.
Causa 3: NFSv3 no realiza un seguimiento de los propietarios de bloqueo. Por lo tanto, NFS mantiene el bloqueo indefinidamente si falla un propietario de bloqueo. Después de un fallo de nodo, un intento de reinicio de WebLogic no puede adquirir un bloqueo.
Solución 3: se trata de una limitación general de NFSv3. En la documentación de WebLogic se proporcionan consideraciones inmediatas de mitigación y diseño a largo plazo. Para obtener más información, consulte Verifying Server Restart Behavior.