Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 啟動 WebLogic 受管伺服器常見報錯解決方案

編輯:關於 Linux

在 Linux 環境部署 Oracle WebLogic Server 時,受管伺服器啟動失敗是常見挑戰。本文針對兩大高頻報錯——.lok 鎖檔案殘留與 IPv6 導致的 Socket 關閉異常,提供經實戰驗證的精準解決方案,助你快速恢復服務。

故障一:.lok 鎖檔案導致啟動失敗

現象描述

啟動受管伺服器時,日誌報錯提示無法獲取鎖,或直接提示 .lok 檔案已存在。典型錯誤訊息類似:

java.io.IOException: Could not obtain lock on /path/to/servers/ManagedServer1/tmp/ManagedServer1.lok

根因分析

WebLogic 使用 .lok 檔案機制防止同一域配置下同名伺服器實例重複啟動。若上次關機不正常(Kill -9、進程崩潰、儲存異常),鎖檔案未被正確釋放,再次啟動時核心檢測到檔案存在即拒絕啟動。

解決步驟

  1. 定位鎖檔案:
    find $DOMAIN_HOME -name "*.lok" -type f
    # 典型路徑:$DOMAIN_HOME/servers//tmp/.lok
    
  2. 確認進程確已停止(關鍵安全檢查):
    ps -ef | grep  | grep -v grep
    # 若有殘留進程,先正常停止或 kill -9
    
  3. 刪除鎖檔案:
    rm -f $DOMAIN_HOME/servers//tmp/.lok
    # 例:
    rm -f /u01/oracle/user_projects/domains/base_domain/servers/ManagedServer1/tmp/ManagedServer1.lok
    
  4. 重新啟動受管伺服器:
    $DOMAIN_HOME/bin/startManagedWebLogic.sh ManagedServer1 https://AdminHost:7001
    

最佳實踐:在啟動腳本中加入啟動前自動清理邏輯,或使用 Node Manager 管理啟動流程,Node Manager 會自動處理鎖檔案。

故障二:Multicast Socket 關閉 / IPv6 相關異常

現象描述

啟動日誌出現:

Multicast socket receive error: java.net.SocketException: Socket closed
...
java.io.IOException: Invalid argument

常見於啟用 IPv6 的 Linux 系統(RHEL 6/7, CentOS 6/7, Oracle Linux 等),WebLogic 預設嘗試使用 IPv6 多播進行叢集通訊,但系統/網路/核心配置不完整導致 Socket 建立失敗。

根因分析

JVM 在雙棧系統上預設優先使用 IPv6。若核心參數 net.ipv6.bindv6only=1、防火牆阻擋 IPv6 多播、或網卡無 IPv6 位址,WebLogic 的多播 Socket 綁定/接收即會拋出 Socket closed 或 Invalid argument。

解決方案:強制 JVM 使用 IPv4 棧

  1. 編輯受管伺服器啟動腳本:
    vi $DOMAIN_HOME/bin/startManagedWebLogic.sh
    
  2. 定位 JAVA_OPTIONS 變量定義處(通常在腳本中段):
    JAVA_OPTIONS="-Dweblogic.security.SSL.trustedCAKeyStore=... ${JAVA_OPTIONS}"
    
  3. 追加 IPv4 強制參數:
    JAVA_OPTIONS="-Dweblogic.security.SSL.trustedCAKeyStore=... ${JAVA_OPTIONS} -Djava.net.preferIPv4Stack=true"
    

    注意:雙引號包裹整體,參數以空格分隔,置於現有選項之後。

  4. 保存並重啟受管伺服器。

替代方案:全域生效(設定於 setDomainEnv.sh)

vi $DOMAIN_HOME/bin/setDomainEnv.sh
# 在 JAVA_OPTIONS 導出前添加
export JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.net.preferIPv4Stack=true"

此法對域內所有伺服器(AdminServer + 所有 ManagedServer)生效,適合純 IPv4 環境。

系統層面輔助檢查(可選)

# 檢查 IPv6 是否啟用
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# 1=禁用, 0=啟用

# 臨時禁用 IPv6 (需重啟網路服務永久生效)
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

# 永久禁用 (GRUB 內核參數)
# /etc/default/grub -> GRUB_CMDLINE_LINUX="... ipv6.disable=1"
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot

建議優先用 JVM 參數解決,避免影響系統其他依賴 IPv6 的服務。

綜合排查清單

檢查項命令/動作預期結果
端口佔用netstat -tlnp | grep 無衝突或屬於正確進程
域配置一致性對比 config.xml 中 listen-address/listen-port與啟動參數、DNS/hosts 一致
Node Manager 狀態ps -ef | grep NodeManager運行中,日誌無錯誤
JVM 記憶體參數檢查 USER_MEM_ARGS / JAVA_OPTIONS-Xms/Xmx 合理,無 OOM 風險
日誌目錄權限ls -ld $DOMAIN_HOME/servers//logs屬主為 weblogic 用戶,可寫

WebLogic啟動錯誤示例

WebLogic 受管伺服器啟動故障 80% 集中於環境殘留與網路棧不匹配。建立「啟動前清理鎖檔、JVM 強制 IPv4、端口檢查、權限驗證」標準化運檢清單,可將故障恢復時間壓縮至分鐘級。配合 Node Manager 自動化管理,進一步提升叢集可用性與運維效率。

Copyright © Windows教程網 All Rights Reserved