日志是定位故障的核心依據,WebLogic的日志文件通常位于$DOMAIN_HOME/servers/your_server_name/logs
目錄下(如server.log
)。通過分析日志中的錯誤信息(如java.lang.NullPointerException
、ClassNotFoundException
)或異常堆棧,可快速定位問題根源(如類加載失敗、數據庫連接異常)。
WebLogic依賴多個端口(默認管理端口7001
、節點管理器端口5556
、應用服務器端口7002
等),若端口被其他進程占用,會導致啟動失敗或服務不可用。使用以下命令檢查端口占用情況:
sudo netstat -tulnp | grep <端口號>
若端口被占用,可選擇終止占用進程(kill -9 <PID>
)或修改WebLogic端口配置(編輯config.xml
或nodemanager.properties
文件)。
WebLogic的配置文件(如config.xml
、nodemanager.properties
、setEnv.sh
)需確保語法正確、參數合理。常見配置問題包括:
config.xml
中服務器名稱、集群配置錯誤;nodemanager.properties
中監聽端口(ListenPort
)與防火墻沖突;setEnv.sh
中JAVA_HOME
路徑錯誤(需指向Ubuntu上安裝的JDK目錄,如/usr/lib/jvm/java-8-openjdk-amd64
)。WebLogic對JDK版本有嚴格要求(如WebLogic 12c需JDK 8及以上),需確保:
JAVA_HOME
環境變量設置正確(在setEnv.sh
中添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
);startWebLogic.sh
)使用正確的JDK路徑(可通過./startWebLogic.sh -version
驗證)。系統資源不足(內存、磁盤空間、文件描述符)會導致WebLogic啟動緩慢或崩潰:
free -h
查看內存使用情況,確保剩余內存足夠(建議預留1GB以上);df -h
檢查根分區或$DOMAIN_HOME
所在分區,剩余空間需大于10GB;ulimit -n
查看當前限制(建議設置為65535),若不足可通過修改/etc/security/limits.conf
提升(添加* soft nofile 65535
、* hard nofile 65535
)。若日志中出現java.sql.SQLException: Listener refused the connection
,需檢查:
systemctl status mysql
);config.xml
中的jdbc
參數,如URL、用戶名、密碼);3306
)。若節點管理器無法與管理員服務器通信,需檢查:
5556
)是否開放(sudo ufw allow 5556
);nodemanager.properties
中的ListenPort
是否正確;config.xml
中的<administration-server>
標簽)是否可達。若啟動時間過長(超過10分鐘),可能是java.security
文件中的隨機數生成器導致。修改$JAVA_HOME/jre/lib/security/java.security
,將:
securerandom.source=file:/dev/urandom
改為:
securerandom.source=file:/dev/./urandom
可顯著提升啟動速度。
若日志中出現java.lang.OutOfMemoryError: Java heap space
,需調整JVM內存參數(在startWebLogic.sh
中添加):
-Xms1024m -Xmx2048m -XX:MaxPermSize=512m
其中-Xms
為初始堆大小,-Xmx
為最大堆大?。ńㄗh為初始大小的1.5-2倍)。
若應用響應緩慢,可使用jstack
工具分析線程狀態:
jstack <WebLogic_PID> > thread_dump.txt
查看thread_dump.txt
中的死鎖(deadlock
)或長時間等待(BLOCKED
)線程,優化代碼或調整線程池大?。?code>config.xml中的<thread-pool>
標簽)。
若日志中出現java.sql.SQLRecoverableException: IO Error: Connection reset
,需調整數據庫連接池參數(config.xml
中的<jdbc-connection-pool>
標簽):
max-capacity
(最大連接數,如20
);test-connections-on-reserve="true"
(借用連接時測試有效性);inactive-connection-timeout-seconds
(閑置連接超時時間,如300
秒)。若部署時出現weblogic.management.deploy.DeploymentException: Failed to deploy
,需檢查:
unzip -t
驗證);console
中選擇Deployments
→Install
,指定正確路徑);javax.servlet
jar包,需添加到WEB-INF/lib
目錄)。若應用出現java.lang.LinkageError
或ClassNotFoundException
,需檢查類加載器層次結構(通過console
→Servers
→your_server
→Configuration
→Class Loader
),建議將應用設置為父類加載器優先(Parent Last
),避免與WebLogic自帶庫沖突。