บทความ · หมวด

เซิร์ฟเวอร์และ DevOps

Linux Docker nginx เครือข่าย และการดูแลระบบให้ทำงานต่อเนื่อง

11 บทความ

#Serverกลาง

PostgreSQL 18: ใช้ uuidv7() แทน UUID v4 และเปิด async I/O ให้ถูก

PostgreSQL 18 มี uuidv7() ที่เรียงตามเวลา ทำให้ B-tree index เล็กและร้อนน้อยกว่า v4 และมี async I/O ผ่าน io_method เลือก worker หรือ io_uring พร้อมตัวอย่างคำนวณขนาด index

อ่าน 9 นาที
#Serverเริ่มต้น

สำรองข้อมูล 3-2-1 บน VPS และซ้อม restore ทุกเดือน

backup ที่ไม่เคยลองกู้คือความหวัง ไม่ใช่แผน กฎ 3-2-1 และ 3-2-1-1-0 อะไรต้องสำรองบน VPS เข้ารหัสด้วย restic คำนวณ retention และพื้นที่ ซ้อมกู้ทุกเดือน

อ่าน 11 นาที
#Serverเริ่มต้น

ดิสก์เต็มจนเซิร์ฟเวอร์ล่ม: หาตัวการ แล้วจำกัด journald, logrotate, Docker logs

เซิร์ฟเวอร์หยุดเพราะดิสก์เต็ม หาว่าอะไรกินที่ด้วย df, du, ncdu ตัวการที่เจอบ่อย วิธีตั้งเพดาน journald, logrotate, Docker log และตั้งเตือนที่ 80%

อ่าน 11 นาที
#Serverกลาง

รันแอปด้วย systemd แทน screen และ nohup: unit file, restart, timer แทน cron

เลิกเปิดแอปค้างไว้ใน screen หรือ nohup เขียน systemd unit ให้รันด้วย user แยก restart เองเมื่อพัง อ่าน env จากไฟล์ ล็อกสิทธิ์ และใช้ timer แทน cron

อ่าน 12 นาที
#Serverขั้นสูง

ย้าย schema PostgreSQL ไม่ต้องปิดระบบ: expand, migrate, contract

เปลี่ยนชื่อคอลัมน์ใน 3 deploy โดยไม่มีใครเห็น error ล็อกตัวไหนต้องระวัง CREATE INDEX CONCURRENTLY, NOT VALID แล้ว VALIDATE, lock_timeout และ backfill ทีละก้อน

อ่าน 11 นาที
#Serverเริ่มต้น

เซิร์ฟเวอร์ ที่บ้าน IP เปลี่ยนบ่อย ทำ DDNS เองด้วย API ของ DNS และ cron

ทำไม IP บ้านถึงเปลี่ยน และสคริปต์ Python สั้น ๆ ที่เช็ก IP ทุก 5 นาที แล้วแก้ A record ผ่าน API ของผู้ให้บริการ DNS ยกตัวอย่าง DigitalOcean พร้อมเรื่อง TTL และ token

อ่าน 13 นาที
#Serverเริ่มต้น

ย้ายเว็บแล้ว ทำไมบางคนยังเห็นเว็บเก่า เรื่อง DNS cache และ TTL จากเคสจริง

เปลี่ยน DNS ชี้ไป เซิร์ฟเวอร์ ใหม่แล้ว แต่ Google DNS ยังตอบ IP เก่าอยู่สองชั่วโมง ทำไมถึงเป็นแบบนั้น ดูได้ยังไงว่าใครเห็นอะไร และย้ายโดเมนครั้งหน้าให้ไม่ต้องรอ

อ่าน 9 นาที
#Serverเริ่มต้น

ให้ เซิร์ฟเวอร์ รายงานตัวทาง Telegram สถานะ เตือนภัย และปิดเครื่องอย่างนุ่มนวล

สคริปต์ Python ไม่กี่สิบบรรทัดบนเครื่องเล็ก ส่งสถานะ CPU แรม ดิสก์ เข้า Telegram เตือนเมื่อเกินเกณฑ์โดยไม่เตือนซ้ำ และปิดเครื่องตามเวลาแบบหยุด container ตามลำดับ

อ่าน 15 นาที
#Serverกลาง

เก็บข้อมูลตามเวลาด้วย TimescaleDB บีบอัด สรุปรายชั่วโมง และเมื่อไหร่ห้ามลบ

ข้อมูลที่เข้าทุกไม่กี่วินาทีโตจนฐานข้อมูลช้า TimescaleDB แก้ด้วย hypertable บีบอัดของเก่า สรุปรายชั่วโมงอัตโนมัติ และเมื่อไหร่ไม่ควรตั้งให้ลบ พร้อม SQL จริง

อ่าน 8 นาที
#Serverกลาง

Deploy ทีเดียวทั้งก้อน ไม่มีเว็บครึ่ง ๆ และย้อนกลับได้ในคำสั่งเดียว

ก๊อปไฟล์ทับโฟลเดอร์เว็บตรง ๆ ผู้ใช้จะเจอเว็บที่อัปโหลดไปครึ่งเดียว วิธีสลับโฟลเดอร์ที่เว็บนี้ใช้ ช่องว่างเล็ก ๆ ที่ยังเหลือ และแบบ symlink ที่สลับได้ทันที

อ่าน 7 นาที
#Serverกลาง

รันฐานข้อมูล cache แอป และ HTTPS บนเครื่อง 2GB ให้รอด ตั้งเพดานทุกอย่างที่โตได้

เครื่องเล็กไม่ได้พังเพราะเล็ก แต่พังเพราะมีอะไรสักอย่างโตไม่มีเพดาน ค่าตั้ง PostgreSQL Redis log ของ Docker และ swap ที่ใช้จริงบนเครื่อง 2GB พร้อมเหตุผลของแต่ละตัว

อ่าน 8 นาที