๑๖16อัปเกรดและแก้ปัญหา
Upgrade runbook and troubleshooting
TL;DR — สรุปใน 30 วินาทีtldr
บทสุดท้ายคือ "คู่มือผู้รอดชีวิต" — ทุกบทอื่นชี้กลับมาที่นี่เมื่อมีปัญหา มีสองส่วน: วินัยการอัปเกรดที่ทำให้ระบบไม่พังตอนอัป และ สูตรแก้เมื่อมันพังตอนตี 2
เมื่อไหร่ควรใช้ / When to usewhen to use
กลับมาที่บทนี้ทุกครั้งที่: จะอัปเกรดส่วนไหนก็ตาม, เจออาการผิดปกติ, หรืออ่านเจอคำว่า "ถ้าติดตรงไหน" ในบทอื่น
วิธีทำ / How-tohow to
กฎ 6 ข้อของการอัปเกรด (ไม่มีข้อไหนต่อรอง):
- ปักเวอร์ชันทุกอย่าง — ห้าม latest เด็ดขาด (เคยโดน latest เปลี่ยนพฤติกรรมใต้มือ)
- หนึ่งองค์ประกอบต่อหนึ่งหน้าต่างเวลา — อัปสองอย่างพร้อมกันแล้วพัง = เรียนรู้อะไรไม่ได้เลย
- สำรองก่อนแตะ — dump Postgres + snapshot config และต้อง "กู้กลับได้จริง" (แบ็กอัพที่ไม่เคยกู้ = ข่าวลือ)
- เขียนแผนถอยก่อนพิมพ์คำสั่งอัป
- รันชุดตรวจ 6 ข้อหลังทุกการเปลี่ยน — เขียวทั้ง 6 หรือถอยกลับ
- นอกชั่วโมงเร่ง — หลัง 23:00 ของทุกวัน เว้นหน้าต่างรีสตาร์ทอัตโนมัติของเราเอง
ชุดตรวจ 6 ข้อ (รันหลังทุกการเปลี่ยนแปลง):
ต้นฉบับเต็มอยู่ใน docs/upgrade.md ของ repo — คัดลอกไปเป็นสคริปต์ของคุณได้เลย
อาการที่พบบ่อยกับทางแก้บนมือ:
| อาการ | สาเหตุที่พบบ่อย | ทางแก้ |
|---|---|---|
| บอทตอบว่างเปล่า | think เปิด + num_predict น้อย | pin think:false บน route (บทที่ ๗) |
| ข้อความไหลช้า ๆ ขึ้นเป็นพัก ๆ | สองโมเดล resident จน swap | ไล่โมเดลรอง (keep_alive 0) แล้วดูบทที่ ๓ |
| เข้าเว็บแชทไม่ได้ 401 รัว ๆ | กุญแจ/เซสชันหมดอายุ | ตรวจ master key ใน .env แล้ว up -d ใหม่ |
| คำตอบไทยเริ่มมีตัวจีนชุก | system prompt หลุด / route ใหม่ไม่ได้ใส่ Config G | กลับไปดู route + บทที่ ๑๒ |
| ค่าคลาวด์วันนี้สูงผิดปกติ | Mac ล่มนาน จน Tier 3 ทำงานหนัก | ดู spend log รายชั่วโมง + เช็คสาเหตุที่ Mac |
| อัปเดตแล้วพัง | เวอร์ชันลอย / param ถูกตัดเงียบ | ถอยกลับแท็กเดิมก่อน แล้วหาสาเหตุทีหลัง |
สูตรตี 2 (พังตอนกลางคืน): (1) อย่า debug ลึก ๆ ตอนง่วง — ถอยกลับแท็กเดิมก่อน (2) เก็บ log 30 นาทีล่าสุดใส่โฟลเดอร์เหตุการณ์ (3) นอน (4) ทำ post-mortem หนึ่งหน้าใน 48 ชม. ระบุสาเหตุราก + กฎข้อไหนที่ถ้าทำตามจะกันเหตุนี้ แล้วเพิ่มกฎนั้นเข้าคู่มือ
ตัวอย่างการตั้งค่า / Config exampleconfig example
ขั้นตอนอัปเกรดยอดฮิตแบบย่อ (เต็มอยู่ใน docs/upgrade.md):
# --- Ollama บน Mac ---
brew upgrade ollama # แล้ว restart service
ollama --version # client == server ต้องตรงกัน
ollama ps # โมเดลหลักต้องกลับมา resident
# แชทอุ่นเครื่องแรก < 5 วิ จึงนับว่าเสร็จ
# --- LiteLLM / WebUI บน VPS ---
docker compose pull litellm # แท็กที่ปักไว้
docker compose up -d litellm # recreate ตัวเดียว
docker compose logs -f litellm # ดู boot: parse config + DB migrate
# หลังอัป: diff /model/info กับ snapshot ก่อนอัป + รัน smoke 6 ข้อความเสี่ยงสุด = migration ของฐานข้อมูล ดังนั้น dump Postgres ทุกครั้งก่อน pull
Pro tip — เคล็ดลับจากสนามจริงpro tip
คำถามที่พบบ่อย / FAQfaq
ถาม: ควรอัปเดตถี่แค่ไหน? — มี CVE ด่วน = ทันทีแต่ตามกฎ 6 ข้อ, ปกติ = เดือนละครั้งในหน้าต่างกลางคืน, macOS = เลือกสัปดาห์ว่าง ๆ เท่านั้น
ถาม: พังจนไม่รู้จะทำไง? — ถอยทั้ง stack กลับแท็กเดิมทั้งหมด (ทำได้เพราะทุกอย่างปักเวอร์ชัน + มี dump) แล้วค่อยหาสาเหตุบนสำเนา ไม่ใช่บนของจริงที่ลูกค้ากำลังใช้
คำถามอื่น ๆ ดูที่ FAQ
ดูเพิ่ม / See alsosee also
- บทที่ ๑๕ · ความปลอดภัย — ตรวจก่อนและหลังอัปเกรด
- docs/upgrade.md — ฉบับอังกฤษเต็ม