導致 Web 站點無法正常運作的因素眾多,系統性排查極具挑戰。本文彙整最常見的致命原因,掌握這些核心問題的診斷與對策,也能從容應對突發狀況。
最常見的癥結。優秀的網管會持續監控磁碟使用率,定期將舊資料轉存備份介質(如磁帶)。日誌檔案(Web、SQL*Net、JDBC、應用程式伺服器日誌)增長極快,極易佔滿磁碟。建議將日誌導向獨立檔案系統,避免日誌爆滿拖垮作業系統。
以 C/C++ 撰寫的 Web 伺服器 API 模組,若間接引用指標出錯(存取無效記憶體),作業系統會強制終止所有進程。Java 雖無指標,但空物件引用若未妥善用例外處理捕獲,同樣會導致 JVM 異常退出。Java 的可靠性機制雖好,但額外檢查會帶來性能損耗。
Web 伺服器需大量開啟檔案與網路連線(Socket),每個進程預設僅 64 個描述符,極易成為瓶頸。可透過 shell 內建 ulimit 指令提高上限,並確保設定值不低於執行緒數。
多執行緒提升性能的代價是可靠性風險。死結典型場景:執行緒 A 等待 B 釋放資源,B 同時等待 A。高負載下難以在測試階段重現。Java 因執行緒編程容易,死結更普遍。可透過 synchronized 關鍵字減少競態,但會影響性能。資料庫內部在極高負載下也可能死結。若程式使用永久鎖(如鎖檔案)且異常結束未釋放,需手動解鎖。
Netscape Enterprise Server 每連線佔一執行緒,執行緒耗盡會掛起拒絕服務。若負載均衡器未偵測到故障,流量會持續湧入導致整叢集雪崩。對策:調整 RqThrottle 參數限制最大併發連線,確保檔案描述符上限 ≥ 執行緒數,避免新瓶頸。
許多資料庫的游標數量固定,大量並發查詢會耗盡游標導致排隊。此問題常在負載測試才暴露,DBA 應定期檢查表空間、序號限制等設定,善用廠商提供的監控建模工具。
相關性設定錯誤、子網流量過載、劣質裝置驅動程式、硬體故障、錯誤的通配符檔案、關鍵表被意外鎖定等,均可能癱瘓站點。