mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-22 21:59:59 +00:00
Adds a schema to validate the manifest.yaml described in [this RFC](https://github.com/neondatabase/neon/blob/main/docs/rfcs/038-independent-compute-release.md) and a github workflow to test this.
122 lines
6.3 KiB
YAML
122 lines
6.3 KiB
YAML
pg_settings:
|
|
# Common settings for primaries and replicas of all versions.
|
|
common:
|
|
# Check for client disconnection every 1 minute. By default, Postgres will detect the
|
|
# loss of the connection only at the next interaction with the socket, when it waits
|
|
# for, receives or sends data, so it will likely waste resources till the end of the
|
|
# query execution. There should be no drawbacks in setting this for everyone, so enable
|
|
# it by default. If anyone will complain, we can allow editing it.
|
|
# https://www.postgresql.org/docs/16/runtime-config-connection.html#GUC-CLIENT-CONNECTION-CHECK-INTERVAL
|
|
client_connection_check_interval: "60000" # 1 minute
|
|
# ---- IO ----
|
|
effective_io_concurrency: "20"
|
|
maintenance_io_concurrency: "100"
|
|
fsync: "off"
|
|
hot_standby: "off"
|
|
# We allow users to change this if needed, but by default we
|
|
# just don't want to see long-lasting idle transactions, as they
|
|
# prevent activity monitor from suspending projects.
|
|
idle_in_transaction_session_timeout: "300000" # 5 minutes
|
|
listen_addresses: "*"
|
|
# --- LOGGING ---- helps investigations
|
|
log_connections: "on"
|
|
log_disconnections: "on"
|
|
# 1GB, unit is KB
|
|
log_temp_files: "1048576"
|
|
# Disable dumping customer data to logs, both to increase data privacy
|
|
# and to reduce the amount the logs.
|
|
log_error_verbosity: "terse"
|
|
log_min_error_statement: "panic"
|
|
max_connections: "100"
|
|
# --- WAL ---
|
|
# - flush lag is the max amount of WAL that has been generated but not yet stored
|
|
# to disk in the page server. A smaller value means less delay after a pageserver
|
|
# restart, but if you set it too small you might again need to slow down writes if the
|
|
# pageserver cannot flush incoming WAL to disk fast enough. This must be larger
|
|
# than the pageserver's checkpoint interval, currently 1 GB! Otherwise you get a
|
|
# a deadlock where the compute node refuses to generate more WAL before the
|
|
# old WAL has been uploaded to S3, but the pageserver is waiting for more WAL
|
|
# to be generated before it is uploaded to S3.
|
|
max_replication_flush_lag: "10GB"
|
|
max_replication_slots: "10"
|
|
# Backpressure configuration:
|
|
# - write lag is the max amount of WAL that has been generated by Postgres but not yet
|
|
# processed by the page server. Making this smaller reduces the worst case latency
|
|
# of a GetPage request, if you request a page that was recently modified. On the other
|
|
# hand, if this is too small, the compute node might need to wait on a write if there is a
|
|
# hiccup in the network or page server so that the page server has temporarily fallen
|
|
# behind.
|
|
#
|
|
# Previously it was set to 500 MB, but it caused compute being unresponsive under load
|
|
# https://github.com/neondatabase/neon/issues/2028
|
|
max_replication_write_lag: "500MB"
|
|
max_wal_senders: "10"
|
|
# A Postgres checkpoint is cheap in storage, as doesn't involve any significant amount
|
|
# of real I/O. Only the SLRU buffers and some other small files are flushed to disk.
|
|
# However, as long as we have full_page_writes=on, page updates after a checkpoint
|
|
# include full-page images which bloats the WAL. So may want to bump max_wal_size to
|
|
# reduce the WAL bloating, but at the same it will increase pg_wal directory size on
|
|
# compute and can lead to out of disk error on k8s nodes.
|
|
max_wal_size: "1024"
|
|
wal_keep_size: "0"
|
|
wal_level: "replica"
|
|
# Reduce amount of WAL generated by default.
|
|
wal_log_hints: "off"
|
|
# - without wal_sender_timeout set we don't get feedback messages,
|
|
# required for backpressure.
|
|
wal_sender_timeout: "10000"
|
|
# We have some experimental extensions, which we don't want users to install unconsciously.
|
|
# To install them, users would need to set the `neon.allow_unstable_extensions` setting.
|
|
# There are two of them currently:
|
|
# - `pgrag` - https://github.com/neondatabase-labs/pgrag - extension is actually called just `rag`,
|
|
# and two dependencies:
|
|
# - `rag_bge_small_en_v15`
|
|
# - `rag_jina_reranker_v1_tiny_en`
|
|
# - `pg_mooncake` - https://github.com/Mooncake-Labs/pg_mooncake/
|
|
neon.unstable_extensions: "rag,rag_bge_small_en_v15,rag_jina_reranker_v1_tiny_en,pg_mooncake,anon"
|
|
neon.protocol_version: "3"
|
|
password_encryption: "scram-sha-256"
|
|
# This is important to prevent Postgres from trying to perform
|
|
# a local WAL redo after backend crash. It should exit and let
|
|
# the systemd or k8s to do a fresh startup with compute_ctl.
|
|
restart_after_crash: "off"
|
|
# By default 3. We have the following persistent connections in the VM:
|
|
# * compute_activity_monitor (from compute_ctl)
|
|
# * postgres-exporter (metrics collector; it has 2 connections)
|
|
# * sql_exporter (metrics collector; we have 2 instances [1 for us & users; 1 for autoscaling])
|
|
# * vm-monitor (to query & change file cache size)
|
|
# i.e. total of 6. Let's reserve 7, so there's still at least one left over.
|
|
superuser_reserved_connections: "7"
|
|
synchronous_standby_names: "walproposer"
|
|
|
|
replica:
|
|
hot_standby: "on"
|
|
|
|
per_version:
|
|
17:
|
|
common:
|
|
# PostgreSQL 17 has a new IO system called "read stream", which can combine IOs up to some
|
|
# size. It still has some issues with readahead, though, so we default to disabled/
|
|
# "no combining of IOs" to make sure we get the maximum prefetch depth.
|
|
# See also: https://github.com/neondatabase/neon/pull/9860
|
|
io_combine_limit: "1"
|
|
replica:
|
|
# prefetching of blocks referenced in WAL doesn't make sense for us
|
|
# Neon hot standby ignores pages that are not in the shared_buffers
|
|
recovery_prefetch: "off"
|
|
16:
|
|
common: {}
|
|
replica:
|
|
# prefetching of blocks referenced in WAL doesn't make sense for us
|
|
# Neon hot standby ignores pages that are not in the shared_buffers
|
|
recovery_prefetch: "off"
|
|
15:
|
|
common: {}
|
|
replica:
|
|
# prefetching of blocks referenced in WAL doesn't make sense for us
|
|
# Neon hot standby ignores pages that are not in the shared_buffers
|
|
recovery_prefetch: "off"
|
|
14:
|
|
common: {}
|
|
replica: {}
|