Bối cảnh: máy chủ web được lưu trữ trên DigitalOcean với cơ sở dữ liệu PostgreSQL.
Chúng tôi đã gặp sự cố cơ sở dữ liệu định kỳ mà không rõ lý do. Cuối cùng, tôi đã tìm ra một truy vấn bị lỗi làm quá tải hệ thống và tôi gần như chắc chắn rằng đó là vấn đề.
Tuy nhiên, khi tôi đang điều tra các sự cố postgres, tôi đã bắt gặp một bưu kiện đề cập đến việc điều chỉnh hệ thống hạt nhân.shmmax
bởi vì nó liên quan đến cài đặt postgres shared_buffer
.
Hóa ra khi tôi chạy mèo /proc/sys/kernel/shmmax
giá trị của nó là 18446744073692774399
! Tôi không biết tại sao, nhưng điều này có vẻ điên rồ.
Dù sao đi nữa, tại sao giá trị này có thể lớn như vậy và nó nên là gì?
Mức sử dụng bộ nhớ trong giọt của chúng tôi (tổng 16 GB) từng là khoảng 87%. Sau khi khắc phục truy vấn của tôi khi máy chủ khởi động lại, nó vẫn ở mức thấp hơn khoảng 47% và theo thời gian đã trở lại khoảng 84% sau vài giờ. Không có sysadmin nhưng tôi cho rằng giá trị cao của sshmax có thể liên quan?
Các cài đặt postgres có liên quan khác là:
shared_buffers = 4GB
max_connections = 300
max_wal_size = 2GB
checkpoint_timeout = 15 phút
checkpoint_timeout = 15 phút
điểm kiểm tra_hoàn thành_mục tiêu = 0,9
Câu hỏi của tôi là về giá trị shmmax cao và nó có thể liên quan như thế nào đến cài đặt postgres bị lỗi và tại sao mức sử dụng bộ nhớ lại tăng lên như vậy.