Select Page

PHP-FPM 被 OOM Killer 殺掉?完整排查與修復實戰紀錄(Ubuntu 16GB RAM 環境)

最近我的伺服器突然出現網站 502 錯誤,檢查後發現 php8.2-fpm 服務竟然被系統強制終止。透過一系列排查,最終確認是 Linux OOM Killer(Out Of Memory) 觸發導致。

這篇文章整理完整排查過程與解決方案,提供給遇到相同問題的人參考。


📌 問題現象

使用 systemctl status php8.2-fpm 發現:

Active: failed (Result: oom-kill)

進一步檢查 kernel log:

Out of memory: Killed process 7057 (php-fpm8.2)
anon-rss:283560kB
shmem-rss:119848kB

代表:

  • 系統記憶體耗盡
  • Linux 啟動 OOM Killer
  • 強制殺掉 php-fpm worker

🔍 進一步分析

查看當時 PHP worker 記憶體使用情況:

ps -o pid,rss,etime,cmd -C php-fpm8.2 --sort=-rss | head -n 20

當時結果顯示:

RSS 約 250MB ~ 325MB/每個 worker

而之前狀態顯示:

Processes active: 80
idle: 0

🔥 問題核心

如果每個 worker 約 300MB:

300MB × 80 = 24GB

但機器只有:

15GB RAM
0GB Swap

👉 記憶體一定會爆。


🧠 伺服器環境

Memory: 15GiB
Swap: 0

這代表:

  • 沒有 swap 作為緩衝
  • 一旦瞬間記憶體尖峰,直接 OOM

🛠 解決方案


✅ 1️⃣ 建立 8GB Swap(防止再次 OOM)

sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

確認:

swapon --show
free -h

結果:

Swap: 8.0GiB

建議調整 swappiness

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf

✅ 2️⃣ 調整 PHP-FPM 設定(關鍵)

編輯:

/etc/php/8.2/fpm/pool.d/www.conf

修改為:

pm = dynamic
pm.max_children = 25
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 10
pm.max_requests = 500

為什麼設 25?

假設每個 worker 約 150MB:

150MB × 25 ≈ 3.7GB

在 15GB RAM 環境下非常安全。


✅ 3️⃣ 開啟 Slow Log(抓出慢請求)

www.conf 加入:

request_slowlog_timeout = 10s
slowlog = /var/log/php8.2-fpm/www-slow.log
request_terminate_timeout = 60s

建立目錄:

sudo mkdir -p /var/log/php8.2-fpm
sudo chown -R www-data:www-data /var/log/php8.2-fpm
sudo systemctl restart php8.2-fpm

查看慢請求:

sudo tail -f /var/log/php8.2-fpm/www-slow.log

📊 調整後效果

重啟後查看:

ps -o pid,rss,etime,cmd -C php-fpm8.2 --sort=-rss | head -n 20

結果:

RSS 約 100MB ~ 170MB
ELAPSED 僅 20 秒左右

✔ 不再出現 300MB 以上肥 worker
✔ 不再出現 active 80
✔ 系統穩定運作


🎯 問題總結

本次 OOM 原因:

  1. pm.max_children 設定過高
  2. 每個 worker 記憶體使用偏高
  3. 沒有 swap 緩衝
  4. 慢請求導致 worker 堆積

最終解法:

  • 限制 max_children
  • 建立 swap
  • 開 slowlog 抓慢請求
  • 設定 max_requests 避免 memory leak

🚀 建議最佳實務

設定建議
Swap一定要有(至少 4GB)
max_children用 RAM / worker RSS 計算
max_requests300~1000
slowlog必開
request_terminate_timeout必設

📌 結論

OOM Killer 不是錯誤,它是保護機制。

真正的問題通常是:

  • PHP-FPM 設定不合理
  • 慢請求堆積
  • 記憶體容量與負載不匹配

只要正確限制 worker 數量並建立 swap,伺服器穩定度會大幅提升。


如果你也遇到 php-fpm 被 OOM kill 的問題,希望這篇實戰紀錄能幫助你快速排查與解決。

相關資訊

如何檢查 wordpress 網站被誰存取和攻擊

目前正在處理的 request

編輯 php-fpm pool(www)

啟用下面的這幾行

重啟服務

檢查服務

curl 127.0.0.1/fpm-status?full

會看到的資訊

慢查詢-外掛定位

查詢

tail -f /var/log/php-fpm/slow.log

# 或是
tail -n 50 /var/log/php-fpm/slow.log

針對慢查詢,精準的找出問題

慢站點 Top:

sudo awk -F'= ' '/^script_filename/ {print $2}' /var/log/www-slow.log \
| awk -F'/' '{print $4}' | sort | uniq -c | sort -nr | head -20

入口 Top:

sudo awk -F'= ' '/^script_filename/ {print $2}' /var/log/www-slow.log \
| awk -F'/' '{print $NF}' | sort | uniq -c | sort -nr | head -20

外掛 Top:

多站的正確架構

每站一個 pool:

Nginx 的對應:

Lumi AI 是什麼?用聊天就能完成網站的 AI 建站工具介紹

Lumi AI 是什麼?用聊天就能完成網站的 AI 建站工具介紹

以前建立一個網站往往代表著學寫程式、研究版型、反覆修改設計,對許多人來說門檻相當高。但現在,隨著 AI 技術成熟,網站製作正快速走向「對話化」。
Lumi AI 主打一個簡單卻強大的理念:你只需要與 AI 聊天,就能將腦中的想法,變成一個優雅且可行的網站。


什麼是 Lumi AI?

Lumi AI 是一款 AI 驅動的網站建立工具,使用者不需要任何設計或程式背景,只要透過對話方式,描述你的想法,例如:

  • 「我想要一個新創公司形象網站」
  • 「幫我做一個產品介紹頁,有現代感與科技風」
  • 「我需要一個個人作品集網站」

Lumi 會根據你的描述,即時產生網站結構、版型與內容,讓「想法 → 網站」的距離縮短到幾分鐘。


Lumi AI 的核心特色

1️⃣ 與 AI 聊天,就能建立網站

Lumi 最大的特色在於對話式體驗。你不需要面對複雜的後台設定,只要像聊天一樣說出需求,AI 就會一步步幫你完成網站雛形。

2️⃣ 將創意快速轉化為可行網站

從概念、版型到內容呈現,Lumi AI 會自動整合設計與結構,產生一個真正可以使用的網站,而不是只有概念草稿。

3️⃣ 優雅、現代的視覺設計

Lumi 預設產出的網站風格簡潔、現代,特別適合新創團隊、產品頁面、個人品牌與展示型網站。

4️⃣ No-Code,任何人都能上手

不論你是設計師、創業者、行銷人員,甚至是 Data Analyst,只要能清楚描述需求,就能用 Lumi AI 建立網站,完全不需要寫程式。


Lumi AI 與 Data AI、Data Analyst 的關聯

你可能會好奇,Lumi AI 和 Data AI、Data Analyst 有什麼關係?

實際上,Lumi AI 非常適合用來:

  • 建立 資料分析成果展示網站
  • 製作 Data Analyst 個人作品集(Portfolio)
  • 快速生成 數據產品或 AI 專案的介紹頁

對 Data Analyst 而言,Lumi AI 能大幅降低「展示分析成果」的門檻,讓重點回到資料洞察本身,而非網站技術細節


Lumi AI 適合哪些人使用?

  • 🚀 新創團隊:快速驗證想法,建立產品或服務頁
  • 🎨 設計與行銷人員:用對話完成網站初稿
  • 📊 Data Analyst / Data AI 專案負責人:展示分析成果與案例
  • 🧑‍💻 個人品牌經營者:建立個人網站或作品集

官方網站

👉 https://lumi.new/zh-TW

Data Analyst 必看:Julius AI 如何用自然語言顛覆資料分析

Data Analyst 必看:Julius AI 如何用自然語言顛覆資料分析

Data Analyst(資料分析師)與企業決策者每天都要面對大量數據,但不是每個人都具備寫程式、操作複雜分析工具的能力。這正是 Julius AI 誕生的原因——讓你不用寫程式,只要用英文問問題,就能在幾秒鐘內獲得洞察


什麼是 Julius AI?

Julius AI 是一款以 Data AI 為核心的智慧資料分析平台。使用者只需上傳資料(例如 CSV、Excel、Google Sheets),就可以像聊天一樣,用自然語言詢問問題:

  • 「哪一個產品的成長率最高?」
  • 「請幫我畫出近三年的營收趨勢圖」
  • 「這份資料中有沒有異常值?」

Julius AI 會即時理解你的問題,並自動完成分析、計算與視覺化,讓資料真正「開口說話」。


Julius AI 的核心特色

1️⃣ 連接你的資料,立刻開始分析

Julius AI 支援多種常見資料格式,無論是試算表還是資料表,都能快速上傳並使用,完全不需要事前建模或設定複雜流程。

2️⃣ 用白話英文提問,不需要寫程式

最大的亮點在於 No Coding Required。你不必懂 Python、SQL 或 R,只要用英文描述你的需求,Julius AI 就能自動完成背後的資料分析邏輯。

3️⃣ 幾秒鐘內產生洞察與圖表

從資料清理、分析到圖表生成,Julius AI 幾乎都是即時完成,非常適合需要快速決策的商業場景。

4️⃣ 為 Data Analyst 與非技術人員量身打造

不論你是專業的 Data Analyst,還是行銷、產品、營運人員,Julius AI 都能降低資料分析門檻,讓更多人能參與數據決策。


Julius AI 可以用在哪些情境?

  • 📊 商業決策分析:快速找出銷售趨勢與關鍵指標
  • 📈 行銷成效評估:分析活動轉換率與使用者行為
  • 🧠 教育與研究:協助學生與研究人員理解資料結構
  • 🏢 新創與中小企業:沒有專屬 Data Team 也能做專業分析

為什麼 Julius AI 值得關注?

在過去,資料分析往往意味著「高技術門檻」與「長時間準備」。Julius AI 將 Data AI 與自然語言處理結合,讓資料分析變得更直覺、更民主化。
對 Data Analyst 來說,它能加快工作流程;對非技術背景的使用者來說,則是一條直接進入數據世界的捷徑。


官方網站

👉 https://julius.ai/

CherryNio AI 評測:一站式整合 AI 平台,省下所有訂閱費用

CherryNio AI 評測:一站式整合 AI 平台,省下所有訂閱費用

CherryNio AI(CherryChat.org) 是一個提供 一站式整合 AI 服務平台,聚合了多個頂級大語言模型,如 Sora2、GPT-5、Claude 4.5、Gemini 2.5 Pro 等,讓使用者在同一個介面內即可呼叫不同模型進行聊天、翻譯、分析與客製化應用。

CherryNio 不僅是一個 AI 聊天介面,還能透過 API 金鑰中轉與整合服務,讓開發者在自己的應用中也能使用這些模型。


📌 為什麼 CherryNio AI 可以替代所有 AI 訂閱?

你可能會為 ChatGPT、Gemini、Claude、甚至 Perplexity 分別付費訂閱。但 CherryNio AI 將這些 AI 能力整合在同一個平台,用更彈性的付費方式替代多個訂閱,大幅降低成本並提升效率。


🧪 案例一:沉浸式翻譯

透過 CherryNio 的 沉浸式翻譯功能(類似瀏覽器翻譯插件),你可以把外語內容即時翻譯並呈現在同一個視窗中,不需跳來跳去切換工具。這對長篇網頁閱讀與即時對話翻譯超級實用。


🛒 案例二:Nano Banana

Nano Banana 是影片中提到的一個實際使用案例,可理解為結合 CherryNio 的 AI 能力,用以 生成或優化產品描述/創意寫作等工作流程,展現平台在不同任務上的彈性應用。


🖱 案例三:Cursor 替代品

許多使用者會用 Cursor 來進行程式碼輔助、資料分析等 AI 工作。CherryNio 提供整合式接口與多模型支援,讓你可以在單一平台內呼叫不同模型執行類似 Cursor 的任務,不再需要額外訂閱 Cursor


🔍 案例四:Perplexity 替代品

Perplexity 是一個主打資料檢索與摘要的 AI 工具。在 CherryNio 中,只要選擇合適的模型和 prompt,就可以達到類似的效果:從大量資料中萃取資訊與整理答案,甚至結合多個模型輸出更豐富的答案。


📚 案例五:本地知識庫

CherryNio 支援建立 本地知識庫或整合 API 查詢功能,讓使用者能夠基於自有資料來源進行檢索與對話。這對於企業內部知識管理、客服智能回覆甚至技術文檔搜索都非常有幫助,更是一種 替代雲端知識庫訂閱的方式


💡 使用模式與付費方式

CherryNio AI 的付費方式通常不是傳統的年費訂閱,而是 透過 Token 或套餐方式彈性付費,讓使用者按需支付,減少不必要的訂閱浪費。

參考資料

https://chat.cherrychat.org