Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 系統監控與 Tomcat 維運指令速查:CPU、記憶體、磁碟、Apache、Postfix、Tomcat 全涵蓋

編輯:系統常見問題解答

SSH 登入 Linux 伺服器,30 秒完成健康檢查的標準指令組合:

1. 系統資源總覽

uptime                    # 1/5/15 分鐘負載、運行天數、用戶數
# 負載 ≤ CPU 核心數 為健康;持續 > 2× 核心數需排查

free -h                   # 記憶體/Swap 使用量 (人類可讀)
# 記憶體 > 90% 且 Swap > 50% → 記憶體洩漏/不足

df -h                     # 檔案系統使用率
# 任一掛載點 > 90% → 清理日誌/暫存/舊備份

top -b -n 1 | head -20    # CPU/記憶體佔用前列進程
# 或 htop (互動式)、atop (歷史記錄)

2. Apache httpd 連線數監控

ps -ef | grep httpd | wc -l
# 對比 MaxRequestWorkers 設定值,超過 80% → 擴容或調優

ss -ant | grep :80 | wc -l   # TCP 80 埠連線數 (含 TIME_WAIT)
ss -s                        # TCP 連線狀態統計

3. Postfix 郵件佇列與日誌

tail -f /var/log/maillog    # 即時追蹤郵件流向
mailq                       # 佇列郵件數量、大小、狀態
postqueue -p                # 詳細佇列列表

# 啟動/重啟服務 (systemd)
systemctl start postfix
systemctl restart postfix
systemctl status postfix

4. Tomcat 完整生命週期管理

# 環境變數 (建議寫入 /etc/profile.d/tomcat.sh)
export CATALINA_HOME=/opt/tomcat
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk

# 日誌位置
$CATALINA_HOME/logs/catalina.out
$CATALINA_HOME/logs/localhost_access_log.YYYY-MM-DD.txt

# 優雅關閉 (等待現有請求完成)
$CATALINA_HOME/bin/shutdown.sh

# 強制終止 (shutdown 失效時)
pkill -f "org.apache.catalina.startup.Bootstrap"
# 或
kill -9 $(pgrep -f "org.apache.catalina.startup.Bootstrap")

# 啟動
$CATALINA_HOME/bin/startup.sh

# 重啟腳本 (生產環境建議)
#!/bin/bash
$CATALINA_HOME/bin/shutdown.sh
sleep 10
if pgrep -f "org.apache.catalina.startup.Bootstrap" > /dev/null; then
    pkill -9 -f "org.apache.catalina.startup.Bootstrap"
fi
$CATALINA_HOME/bin/startup.sh
tail -f $CATALINA_HOME/logs/catalina.out

5. 關鍵 JVM 參數 (setenv.sh / catalina.sh)

export CATALINA_OPTS="-Xms2g -Xmx4g \
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/heapdump.hprof \
-Djava.security.egd=file:/dev/./urandom \
-Dfile.encoding=UTF-8 -Duser.timezone=Asia/Taipei"

6. 自動化健康檢查腳本 (每 5 分鐘 cron)

#!/bin/bash
# healthcheck.sh
THRESHOLD_LOAD=2.0
THRESHOLD_MEM=90
THRESHOLD_DISK=90
THRESHOLD_TOMCAT_THREADS=600

LOAD=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')
MEM=$(free | awk '/Mem:/ {printf "%.0f", $3/$2*100}')
DISK=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
TOMCAT_THREADS=$(ss -ant | grep :8080 | wc -l)

ALERTS=()
(( $(echo "$LOAD > $THRESHOLD_LOAD" | bc -l) )) && ALERTS+=("LOAD:$LOAD")
(( $MEM > $THRESHOLD_MEM )) && ALERTS+=("MEM:$MEM%")
(( $DISK > $THRESHOLD_DISK )) && ALERTS+=("DISK:$DISK%")
(( $TOMCAT_THREADS > $THRESHOLD_TOMCAT_THREADS )) && ALERTS+=("TC_THREADS:$TOMCAT_THREADS")

if [ ${#ALERTS[@]} -gt 0 ]; then
    echo "$(date) ALERT: ${ALERTS[*]}" | mail -s "Server Health Alert" admin@example.com
fi

建立標準化指令庫與自動化監控,讓 Linux 維運從「救火」轉向「預防」。

Copyright © Windows教程網 All Rights Reserved