Thứ Bảy, 31 tháng 5, 2025

20.Quản lý tài nguyên PostgreSQL – CPU, RAM, Swap, IO, Network, Session, Lock, Storage

✅ 1. Mục tiêu quản lý tài nguyên

Mục tiêuLý do
Giám sát sử dụng hệ thốngPhát hiện sớm quá tải, sai cấu hình
Xử lý session treo, lockTối ưu concurrency
Tối ưu RAM/CPU/WALGiảm tiêu hao tài nguyên
Cân đối loadTăng độ ổn định hệ thống

🧩 2. Giám sát CPU, RAM, Swap, IO (từ OS)

🧪 Trên Linux:

bash
top # CPU, RAM free -m # RAM & swap vmstat 1 5 # Swap in/out iostat -xm 1 # Disk IO df -h # Disk usage

✅ Cảnh báo:

  • RAM khả dụng < 20% → cần tối ưu shared_buffers, work_mem

  • Swap tăng liên tục → thiếu RAM thực, cần giảm work_mem hoặc session đồng thời


📦 3. Giám sát tài nguyên từ PostgreSQL

Chỉ sốCâu lệnh kiểm tra
Tổng kết nốiSELECT count(*) FROM pg_stat_activity;
Session đang hoạt độngSELECT * FROM pg_stat_activity WHERE state = 'active';
Lock đang giữSELECT * FROM pg_locks WHERE NOT granted;
IO Buffer hit ratioSELECT sum(blks_hit) / (sum(blks_hit) + sum(blks_read)) FROM pg_stat_database;
WAL usageSELECT * FROM pg_stat_wal;

🔄 4. Theo dõi Session

📊 Tổng hợp session theo trạng thái:

sql
SELECT state, count(*) FROM pg_stat_activity GROUP BY state;

🧠 Kill session:

sql
SELECT pg_terminate_backend(<pid>);

📌 Đặt giới hạn session trong postgresql.conf:

conf
max_connections = 300 idle_in_transaction_session_timeout = 5min

🔓 5. Quản lý Lock & Deadlock

🔧 Xem lock chưa được cấp phát (blocking):

sql
SELECT pid, relation::regclass, mode, granted FROM pg_locks WHERE NOT granted;

🔍 Truy vấn blocking session:

sql
SELECT bl.pid AS blocked_pid, ka.query AS blocking_query, a.query AS blocked_query FROM pg_locks bl JOIN pg_stat_activity a ON a.pid = bl.pid JOIN pg_locks kl ON kl.locktype = bl.locktype AND kl.database IS NOT DISTINCT FROM bl.database JOIN pg_stat_activity ka ON ka.pid = kl.pid WHERE NOT bl.granted AND kl.granted;

💽 6. Giám sát Disk và Storage

📊 Dung lượng bảng lớn:

sql
SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) AS size FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC LIMIT 10;

📊 Dung lượng theo tablespace:

sql
SELECT spcname, pg_size_pretty(pg_tablespace_size(oid)) FROM pg_tablespace;

🧠 7. Theo dõi hiệu suất WAL & Checkpoint

sql
SELECT * FROM pg_stat_bgwriter; SELECT pg_current_wal_lsn(); SELECT * FROM pg_stat_wal;

Nếu buffers_checkpoint và buffers_clean quá cao → cần tăng checkpoint_timeout, checkpoint_completion_target


📈 8. Dùng công cụ theo dõi tổng thể

Công cụTính năng
Prometheus + GrafanaRealtime CPU, RAM, WAL, Session
pgBadgerBáo cáo I/O, Query, Lock
pg_stat_statementsQuery load
pgwatch2, ZabbixAPM tổng thể

🧾 9. Gợi ý cấu hình tối ưu trong postgresql.conf

conf
shared_buffers = 25% RAM effective_cache_size = 75% RAM work_mem = 4MB–32MB tùy hệ thống max_connections = phù hợp với PgBouncer temp_buffers = 16MB wal_buffers = -1 (auto)

📋 10. Checklist quản lý tài nguyên định kỳ

✅ Hàng ngày

Kiểm traCông cụ
Session quá nhiềupg_stat_activity
CPU load tăng caotop, iostat
Truy vấn chậm / blockingpg_locks, pg_stat_statements

✅ Hàng tuần

Kiểm traCông cụ
Dung lượng tablespacepg_tablespace_size()
Lock lớnpg_locks
Bảng phình (bloat)pg_stat_user_tables

✅ Hàng tháng

Kiểm traCông cụ
WAL archive tồn đọngdu -sh /pg_archive
Swap hoạt động bất thườngvmstat, free
Reindex bảng lớn (nếu cần)REINDEX

✅ Kết luận

  • Quản lý tài nguyên = nền tảng sống còn của PostgreSQL

  • Luôn giám sát:

    • CPU, RAM, IO, WAL

    • Lock, session, deadlock

    • Storage và Index bloat

  • Kết hợp: log + dashboard + cảnh báo tự động

=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master