Skip to content

1 - authentication_timeout

authentication_timeout is the PostgreSQL setting that defines the maximum allowed time to complete client authentication.
Note

Fact — official short description: “Sets the maximum allowed time to complete client authentication.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Values
Raw unit
Range , Value1600
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Value60
1 min

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 60 s 1 min

How it works

authentication_timeout sets the maximum allowed time to complete client authentication. The timer covers the authentication exchange before a normal backend session is established, limiting slots consumed by stalled or malicious handshakes.

authentication_timeout is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The final authentication path combines this setting with pg_hba.conf, role attributes, credential material, client capabilities, and sometimes operating-system identity services.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set authentication_timeout from the authentication architecture and security policy, not workload throughput. Test every driver, identity mapping, failover path, and credential-rotation procedure.
OLAP Apply the same security baseline to analytical access; isolate any legacy client exception to a dedicated role and a dated migration plan.
Small nodes Prefer the current secure default for authentication_timeout. Avoid weakening authentication to save marginal CPU on a small node; reduce connection churn with pooling instead.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing authentication_timeout without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing one authentication setting without testing pg_hba.conf ordering, existing secrets, mappings, and every client library.
  • Weakening identity policy to solve connection churn or CPU cost that should be addressed with pooling and capacity planning.
  • Changing authentication_timeout globally without a rollback plan and a client or operational compatibility test.

tcp_keepalives_idle · tcp_keepalives_interval · tcp_keepalives_count · tcp_user_timeout · client_connection_check_interval

References

2 - bonjour

bonjour is the PostgreSQL setting that controls whether PostgreSQL enables advertising the server via Bonjour.
Note

Fact — official short description: “Enables advertising the server via Bonjour.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

bonjour enables advertising the server via Bonjour. It publishes a discoverable service through mDNS only on builds and platforms with Bonjour support; it does not open a listener or alter pg_hba.conf.

bonjour is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

Bonjour advertisement depends on platform support and publishes the listener as metadata; listen_addresses, port, pg_hba.conf, TLS, and firewalls still define actual reachability and trust.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Enable bonjour only when clients deliberately use Bonjour/mDNS on a trusted local network. Treat it as discovery metadata, never as authentication or a highly available service registry.
OLAP Analytical workload shape does not justify different bonjour behavior; use the same reviewed discovery policy and stable service identity.
Small nodes Leave bonjour off or empty unless local zero-configuration discovery is an explicit requirement; it does not improve database capacity.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload or SET to activate bonjour, although it requires a controlled server restart.
  • Treating an mDNS advertisement as an access-control, authentication, or high-availability mechanism.
  • Publishing an unexpected service name or endpoint on an untrusted broadcast domain.
  • Changing bonjour globally without a rollback plan and a client or operational compatibility test.

listen_addresses · port · max_connections · reserved_connections · superuser_reserved_connections · unix_socket_directories

References

3 - bonjour_name

bonjour_name is the PostgreSQL setting that defines the Bonjour service name.
Note

Fact — official short description: “Sets the Bonjour service name.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 "" empty string

How it works

bonjour_name sets the Bonjour service name. An empty string means use the computer name. An empty value derives the advertised service name from the computer name, and the setting matters only when Bonjour advertisement is enabled.

bonjour_name is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

Bonjour advertisement depends on platform support and publishes the listener as metadata; listen_addresses, port, pg_hba.conf, TLS, and firewalls still define actual reachability and trust.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Enable bonjour_name only when clients deliberately use Bonjour/mDNS on a trusted local network. Treat it as discovery metadata, never as authentication or a highly available service registry.
OLAP Analytical workload shape does not justify different bonjour_name behavior; use the same reviewed discovery policy and stable service identity.
Small nodes Leave bonjour_name off or empty unless local zero-configuration discovery is an explicit requirement; it does not improve database capacity.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload or SET to activate bonjour_name, although it requires a controlled server restart.
  • Treating an mDNS advertisement as an access-control, authentication, or high-availability mechanism.
  • Publishing an unexpected service name or endpoint on an untrusted broadcast domain.
  • Changing bonjour_name globally without a rollback plan and a client or operational compatibility test.

listen_addresses · port · max_connections · reserved_connections · superuser_reserved_connections · unix_socket_directories

References

4 - client_connection_check_interval

client_connection_check_interval is the PostgreSQL setting that defines the time interval between checks for disconnection while running queries.
Note

Fact — official short description: “Sets the time interval between checks for disconnection while running queries.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Valuems
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / TCP Settings
Upstream classification
Latest boot value , Value0
0 ms

Lifecycle

Fact Value
First observed PG14
Present in PG14–19 Beta 3
Removed in No
Introduction commit c30f54ad732c — Detect POLLHUP/POLLRDHUP while running queries.
Commit date 2021-04-03
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG14–19 Beta 3 0 ms 0 ms

How it works

client_connection_check_interval sets the time interval between checks for disconnection while running queries. 0 disables connection checks. A nonzero interval lets long-running queries notice a dead client before their next socket write; operating-system support determines whether checks are effective.

client_connection_check_interval is a USER-context setting. An authorized role can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

Timeouts overlap: the first applicable deadline wins, while client, pooler, TCP, and server cancellation behavior determines whether work is retried, canceled, or the session is closed.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Use a nonzero client_connection_check_interval only when abandoning work after client loss materially saves capacity and the platform supports the check. Measure the polling overhead at the chosen interval.
OLAP Long analytical queries can benefit from periodic disconnect detection because they may otherwise run after a client disappears; the interval does not cap a healthy query’s runtime.
Small nodes Leave zero unless orphaned long queries are observed. If enabled, choose an interval that detects waste without adding excessive checks to active queries.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG14–19 Beta 3 unmodified; OLAP: PG14–19 Beta 3 unmodified; CRIT: PG14–19 Beta 3 unmodified; TINY: PG14–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing client_connection_check_interval in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Forgetting that zero usually disables the timeout or delegates behavior to the operating system.
  • Setting overlapping deadlines without deciding which layer owns retries, cancellation, and connection disposal.
  • Changing client_connection_check_interval globally without a rollback plan and a client or operational compatibility test.

tcp_keepalives_idle · tcp_keepalives_interval · tcp_keepalives_count · tcp_user_timeout · authentication_timeout

References

5 - db_user_namespace

db_user_namespace is the PostgreSQL setting that controls whether PostgreSQL enables per-database user names.
Note

Fact — official short description: “Enables per-database user names.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–16
Removed in PG17
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–16 off off

How it works

db_user_namespace enables per-database user names. This legacy feature represented users internally as user@database and was removed in PostgreSQL 17; it is not a modern tenant-isolation mechanism.

db_user_namespace is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The final authentication path combines this setting with pg_hba.conf, role attributes, credential material, client capabilities, and sometimes operating-system identity services.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Do not adopt or tune db_user_namespace: it was a legacy compatibility feature and is absent from PostgreSQL 17+. Migrate to ordinary cluster-wide roles with explicit authorization.
OLAP Do not build analytical tenancy on db_user_namespace. Use roles, schemas, databases, and row-level security according to the required boundary.
Small nodes Leave db_user_namespace off on old releases and remove dependencies before upgrading; it provides no useful small-node optimization.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG16; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–16 unmodified; OLAP: PG9.0–16 unmodified; CRIT: PG9.0–16 unmodified; TINY: PG9.0–16 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing db_user_namespace without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing one authentication setting without testing pg_hba.conf ordering, existing secrets, mappings, and every client library.
  • Weakening identity policy to solve connection churn or CPU cost that should be addressed with pooling and capacity planning.
  • Changing db_user_namespace globally without a rollback plan and a client or operational compatibility test.

password_encryption · scram_iterations · md5_password_warnings · authentication_timeout · oauth_validator_libraries · krb_server_keyfile

References

6 - gss_accept_delegation

gss_accept_delegation is the PostgreSQL setting that defines whether GSSAPI delegation should be accepted from the client.
Note

Fact — official short description: “Sets whether GSSAPI delegation should be accepted from the client.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG16
Present in PG16–19 Beta 3
Removed in No
Introduction commit 9c0a0e2ed92a — rename “gss_accept_deleg” to “gss_accept_delegation”.
Commit date 2023-05-20
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG16–19 Beta 3 off off

How it works

gss_accept_delegation sets whether GSSAPI delegation should be accepted from the client. Accepting delegated credentials lets server-side code act with the client’s GSS identity, so it expands trust beyond ordinary authentication.

gss_accept_delegation is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The final authentication path combines this setting with pg_hba.conf, role attributes, credential material, client capabilities, and sometimes operating-system identity services.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set gss_accept_delegation from the authentication architecture and security policy, not workload throughput. Test every driver, identity mapping, failover path, and credential-rotation procedure.
OLAP Apply the same security baseline to analytical access; isolate any legacy client exception to a dedicated role and a dated migration plan.
Small nodes Prefer the current secure default for gss_accept_delegation. Avoid weakening authentication to save marginal CPU on a small node; reduce connection churn with pooling instead.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG16–19 Beta 3 unmodified; OLAP: PG16–19 Beta 3 unmodified; CRIT: PG16–19 Beta 3 unmodified; TINY: PG16–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing gss_accept_delegation without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing one authentication setting without testing pg_hba.conf ordering, existing secrets, mappings, and every client library.
  • Weakening identity policy to solve connection churn or CPU cost that should be addressed with pooling and capacity planning.
  • Changing gss_accept_delegation globally without a rollback plan and a client or operational compatibility test.

password_encryption · scram_iterations · md5_password_warnings · authentication_timeout · oauth_validator_libraries · krb_server_keyfile

References

7 - krb_caseins_users

krb_caseins_users is the PostgreSQL setting that defines whether Kerberos and GSSAPI user names should be treated as case-insensitive.
Note

Fact — official short description: “Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

krb_caseins_users sets whether Kerberos and GSSAPI user names should be treated as case-insensitive. It affects comparison of authenticated Kerberos/GSS names with database role names; case folding can merge identities that an existing mapping treated as distinct.

krb_caseins_users is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The final authentication path combines this setting with pg_hba.conf, role attributes, credential material, client capabilities, and sometimes operating-system identity services.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set krb_caseins_users from the authentication architecture and security policy, not workload throughput. Test every driver, identity mapping, failover path, and credential-rotation procedure.
OLAP Apply the same security baseline to analytical access; isolate any legacy client exception to a dedicated role and a dated migration plan.
Small nodes Prefer the current secure default for krb_caseins_users. Avoid weakening authentication to save marginal CPU on a small node; reduce connection churn with pooling instead.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing krb_caseins_users without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing one authentication setting without testing pg_hba.conf ordering, existing secrets, mappings, and every client library.
  • Weakening identity policy to solve connection churn or CPU cost that should be addressed with pooling and capacity planning.
  • Changing krb_caseins_users globally without a rollback plan and a client or operational compatibility test.

password_encryption · scram_iterations · md5_password_warnings · authentication_timeout · oauth_validator_libraries · krb_server_keyfile

References

8 - krb_server_keyfile

krb_server_keyfile is the PostgreSQL setting that defines the location of the Kerberos server key file.
Note

Fact — official short description: “Sets the location of the Kerberos server key file.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , ValueFILE:/etc/postgresql-common/krb5.keytab
FILE:/etc/postgresql-common/krb5.keytab

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0 "" empty string
PG9.1–19 Beta 3 FILE:/etc/postgresql-common/krb5.keytab FILE:/etc/postgresql-common/krb5.keytab

How it works

krb_server_keyfile sets the location of the Kerberos server key file. The file contains service keys used by GSSAPI authentication; operating-system ownership and keytab rotation are part of the effective configuration.

krb_server_keyfile is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.

The final authentication path combines this setting with pg_hba.conf, role attributes, credential material, client capabilities, and sometimes operating-system identity services.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set krb_server_keyfile from the authentication architecture and security policy, not workload throughput. Test every driver, identity mapping, failover path, and credential-rotation procedure.
OLAP Apply the same security baseline to analytical access; isolate any legacy client exception to a dedicated role and a dated migration plan.
Small nodes Prefer the current secure default for krb_server_keyfile. Avoid weakening authentication to save marginal CPU on a small node; reduce connection churn with pooling instead.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing krb_server_keyfile without reloading configuration and verifying the effective value and subsequent behavior.
  • Changing one authentication setting without testing pg_hba.conf ordering, existing secrets, mappings, and every client library.
  • Weakening identity policy to solve connection churn or CPU cost that should be addressed with pooling and capacity planning.
  • Changing krb_server_keyfile globally without a rollback plan and a client or operational compatibility test.

password_encryption · scram_iterations · md5_password_warnings · authentication_timeout · oauth_validator_libraries

References

9 - krb_srvname

krb_srvname — Sets the name of the Kerberos service. Observed in PG9.0–9.3; its last measured boot default is postgres in PG9.3, with sighup context. It was removed in PG9.4.
Note

Fact — official short description: “Sets the name of the Kerberos service.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Security and Authentication
Upstream classification
Latest boot value , Valuepostgres
postgres

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–9.3
Removed in PG9.4
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–9.3 postgres postgres

How it works

PostgreSQL describes krb_srvname as follows: “Sets the name of the Kerberos service.” A configuration reload applies the value to the server without a full restart. The atlas measures it in PG9.0–9.3; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

This historical authentication setting selected the Kerberos service principal name used by the server. It disappeared after PostgreSQL 9.3; current deployments should derive their GSS/Kerberos design from pg_hba.conf, the keytab selected by krb_server_keyfile, DNS, and the client service-name options rather than carrying this obsolete server GUC forward.

Read it together with krb_server_keyfile, hba_file, ssl, password_encryption. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Do not add this retired name to a current OLTP configuration. Translate its intent to the documented successor, test the migration under connection and write concurrency, and remove stale automation that still emits it.
OLAP For an upgrade or analytical estate, inventory every generated configuration before cutover. Map the old control to its successor and compare plans, throughput, WAL, or logging behavior rather than assuming the old numeric value is portable.
Small nodes Delete the obsolete override after recording why it existed. On a small node, prefer the successor’s default until measurements justify a new value; an unknown startup parameter can otherwise stop the server.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG9.3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–9.3 unmodified; OLAP: PG9.0–9.3 unmodified; CRIT: PG9.0–9.3 unmodified; TINY: PG9.0–9.3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for krb_srvname as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports sighup context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Copying the removed name into a modern postgresql.conf instead of migrating to its documented successor.

krb_server_keyfile · hba_file · ssl · password_encryption

References

10 - listen_addresses

listen_addresses is the PostgreSQL setting that defines the host name or IP address(es) to listen to.
Note

Fact — official short description: “Sets the host name or IP address(es) to listen to.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Valuelocalhost
localhost

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 localhost localhost

How it works

listen_addresses sets the host name or IP address(es) to listen to. The server binds the listed interfaces at startup; reachability still depends on port, pg_hba.conf, host firewalls, and network routing.

listen_addresses is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

The listener endpoint combines listen_addresses and port at startup, while pg_hba.conf, TLS, firewalls, routing, and service discovery determine which clients can use it.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set listen_addresses from the service topology and expose only required interfaces or ports. Validate poolers, health checks, pg_hba.conf, firewalls, failover, and restart sequencing together.
OLAP Use an explicit analytical endpoint or network when isolation is required, but keep connection information consistent across failover targets.
Small nodes Prefer local-only exposure unless remote access is required. Preserve a tested administrative route before changing listen_addresses and restarting.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload or SET to activate listen_addresses, although it requires a controlled server restart.
  • Assuming a bound address or port grants access; pg_hba.conf and operating-system or network controls still apply.
  • Changing a startup-only endpoint without updating discovery, health checks, firewalls, clients, and the administrative recovery path.
  • Changing listen_addresses globally without a rollback plan and a client or operational compatibility test.

port · max_connections · reserved_connections · superuser_reserved_connections · unix_socket_directories

References

11 - max_connections

The startup-time ceiling on concurrent PostgreSQL client connections and a sizing input for several shared resources.
Note

Fact — official short description: “Sets the maximum number of concurrent connections.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value1262143
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value100
100

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 100 100

How it works

max_connections limits concurrent database-server connections and can only be changed at server start. PostgreSQL sizes some resources directly from it, so raising the ceiling increases allocations including shared memory even when not all slots are busy.

reserved_connections and superuser_reserved_connections carve emergency or privileged capacity out of the same overall ceiling. An application therefore cannot normally consume every configured slot.

A standby must use a value at least as high as its primary. Connection pooling can decouple large client populations from a smaller, controlled number of PostgreSQL backends.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Prefer transaction pooling for large client populations and size PostgreSQL backends for peak active database work plus monitoring, maintenance, and failover margin. Do not map one client connection to one server slot by default.
OLAP Analytical sessions are usually fewer and heavier; keep the backend ceiling low enough that simultaneous work_mem and parallel-worker demand remain bounded. Reserve explicit capacity for ETL and administration.
Small nodes Use a low ceiling with a pooler and preserve reserved slots. Validate startup shared-memory requirements and do not compensate for connection leaks by repeatedly raising the limit.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP 500 different {{ pg_max_connections }}
OLAP 500 different {{ pg_max_connections }}
CRIT 500 different {{ pg_max_connections }}
TINY 250 different {{ pg_max_connections }}
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = 500 (dcs); OLAP: PG9.0–19 Beta 3 = 500 (dcs); CRIT: PG9.0–19 Beta 3 = 500 (dcs); TINY: PG9.0–19 Beta 3 = 250 (dcs). Advice, pending human review — Editorial inference: the templates expose a generous compatibility ceiling behind pooling while reducing it for the small-node profile, but actual active-backend and memory limits still need workload-specific review.

Common pitfalls

  • Changing the value without planning a restart and keeping standbys at least as high as the primary.
  • Ignoring shared-memory and per-backend overhead created by a higher ceiling.
  • Forgetting reserved and superuser-reserved slots when calculating application capacity.
  • Combining a high connection ceiling with generous per-operation memory settings and assuming the product cannot occur.

reserved_connections · superuser_reserved_connections · work_mem · max_worker_processes · max_prepared_transactions · max_wal_senders

References

12 - md5_password_warnings

md5_password_warnings is the PostgreSQL setting that controls whether PostgreSQL enables deprecation warnings for MD5 passwords.
Note

Fact — official short description: “Enables deprecation warnings for MD5 passwords.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Valueon
on

Lifecycle

Fact Value
First observed PG18
Present in PG18–19 Beta 3
Removed in No
Introduction commit db6a4a985bc0 — Deprecate MD5 passwords.
Commit date 2024-12-02
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG18–19 Beta 3 on on

How it works

md5_password_warnings controls a PostgreSQL 18 deprecation WARNING emitted when CREATE ROLE or ALTER ROLE sets an MD5-encrypted password. It does not report authentication with an existing MD5 verifier and is therefore not an inventory of active MD5 clients or roles.

It is a USER-context setting, so an authorized role can change it for the current session and ALTER ROLE or ALTER DATABASE can establish future-session defaults. The warning can only arise in a session that both performs a password-setting statement and has the setting enabled.

password_encryption controls the format generated when plaintext passwords are set, while existing pg_authid verifiers remain unchanged until their passwords are reset. Migration therefore needs a protected verifier inventory, client compatibility testing, and credential rotation in addition to this warning.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Keep md5_password_warnings on, but treat each warning only as evidence that a password-setting statement created or supplied an MD5 verifier. Separately inventory existing verifier types and test every authentication path before enforcing SCRAM-only access.
OLAP Use the same rule for analytical roles: a silent legacy driver may continue authenticating with an old MD5 verifier without generating this warning, so test and rotate those credentials explicitly.
Small nodes Leave the warning enabled; its cost is negligible. Do not mistake an empty warning stream for proof that no MD5 verifiers or MD5-only clients remain.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG18–19 Beta 3 unmodified; OLAP: PG18–19 Beta 3 unmodified; CRIT: PG18–19 Beta 3 unmodified; TINY: PG18–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Assuming the warning fires when an existing MD5 verifier is used for authentication; it fires only when CREATE ROLE or ALTER ROLE sets one.
  • Using the absence of warnings as proof that the cluster has no MD5 secrets or MD5-only clients.
  • Disabling the warning in deployment sessions that create or rotate roles and thereby hiding new MD5 verifier creation.
  • Changing password_encryption without rotating existing role passwords, which leaves their stored verifier format unchanged.

password_encryption · scram_iterations · authentication_timeout · oauth_validator_libraries · krb_server_keyfile

References

13 - oauth_validator_libraries

oauth_validator_libraries is the PostgreSQL setting that lists libraries that may be called to validate OAuth v2 bearer tokens.
Note

Fact — official short description: “Lists libraries that may be called to validate OAuth v2 bearer tokens.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG18
Present in PG18–19 Beta 3
Removed in No
Introduction commit b3f0be788afc — Add support for OAUTHBEARER SASL mechanism
Commit date 2025-02-20
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG18–19 Beta 3 "" empty string

How it works

oauth_validator_libraries lists trusted server modules that can validate OAuth 2.0 bearer tokens. PostgreSQL 18 ships no validator implementation, and the empty default refuses all OAuth connections; a usable deployment must install and name at least one compatible module.

With exactly one listed library, PostgreSQL uses it by default for OAuth connections. With multiple libraries, every oauth record in pg_hba.conf must name a validator selected from this list. The setting has SIGHUP context, so changing the allow-list requires a configuration reload and affects subsequent authentication attempts.

A validator executes trusted native code inside the server authentication path. Its token issuer, audience, claim-to-role mapping, failure behavior, dependencies, package version, and availability on every primary/failover node must agree with pg_hba.conf and the identity provider.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Install one reviewed validator first, pin its package/version on every failover target, and test issuer, audience, expiry, revocation, role mapping, malformed tokens, and identity-provider outage before enabling an oauth HBA rule.
OLAP Use the same validator trust policy for analytical access. If a different issuer or claim mapping is required, list the reviewed modules explicitly and select the intended validator in every matching HBA record.
Small nodes The empty value securely disables OAuth but is not a working OAuth configuration. On a small node, prefer one well-tested validator and budget its token-validation latency instead of weakening checks.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG18–19 Beta 3 unmodified; OLAP: PG18–19 Beta 3 unmodified; CRIT: PG18–19 Beta 3 unmodified; TINY: PG18–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Creating an oauth HBA rule while the list is empty; PostgreSQL will refuse every OAuth connection.
  • Expecting PostgreSQL to provide a built-in validator implementation.
  • Listing multiple libraries without selecting a validator in every oauth HBA record.
  • Installing a validator on the primary but not on a failover target, or trusting native code whose issuer, audience, and role mapping were not reviewed.

password_encryption · scram_iterations · md5_password_warnings · authentication_timeout · krb_server_keyfile

References

14 - password_encryption

password_encryption is the PostgreSQL setting that chooses the algorithm for encrypting passwords.
Note

Fact — official short description: “Chooses the algorithm for encrypting passwords.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Valuemd5, scram-sha-256
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Valuescram-sha-256
scram-sha-256

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–9.6 on on
PG10–13 md5 md5
PG14–19 Beta 3 scram-sha-256 scram-sha-256

How it works

password_encryption chooses the algorithm for encrypting passwords. It affects secrets generated by CREATE ROLE, ALTER ROLE, and password-setting commands; existing stored secrets are not rehashed automatically.

password_encryption is a USER-context setting. An authorized role can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

The final authentication path combines this setting with pg_hba.conf, role attributes, credential material, client capabilities, and sometimes operating-system identity services.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set password_encryption from the authentication architecture and security policy, not workload throughput. Test every driver, identity mapping, failover path, and credential-rotation procedure.
OLAP Apply the same security baseline to analytical access; isolate any legacy client exception to a dedicated role and a dated migration plan.
Small nodes Prefer the current secure default for password_encryption. Avoid weakening authentication to save marginal CPU on a small node; reduce connection churn with pooling instead.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP scram-sha-256 same as boot {{ pg_pwd_enc|default('scram-sha-256') }}
OLAP scram-sha-256 same as boot {{ pg_pwd_enc|default('scram-sha-256') }}
CRIT scram-sha-256 same as boot {{ pg_pwd_enc|default('scram-sha-256') }}
TINY scram-sha-256 same as boot {{ pg_pwd_enc|default('scram-sha-256') }}
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = scram-sha-256 (dcs); OLAP: PG9.0–19 Beta 3 = scram-sha-256 (dcs); CRIT: PG9.0–19 Beta 3 = scram-sha-256 (dcs); TINY: PG9.0–19 Beta 3 = scram-sha-256 (dcs). Advice, pending human review — Editorial inference: SCRAM-SHA-256 establishes a modern password-secret baseline consistently across profiles and supported PostgreSQL releases.

Common pitfalls

  • Changing password_encryption in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Changing one authentication setting without testing pg_hba.conf ordering, existing secrets, mappings, and every client library.
  • Weakening identity policy to solve connection churn or CPU cost that should be addressed with pooling and capacity planning.
  • Changing the algorithm and assuming existing role secrets are automatically converted.

scram_iterations · md5_password_warnings · authentication_timeout · oauth_validator_libraries · krb_server_keyfile

References

15 - password_expiration_warning_threshold

password_expiration_warning_threshold — Threshold for password expiration warnings. Observed in PG19 Beta 3; its last measured boot default is 7 d in PG19 Beta 3, with sighup context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA.
Note

Fact — official short description: “Threshold for password expiration warnings.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Values
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Value604800
7 d

Lifecycle

Fact Value
First observed PG19 Beta 3
Present in PG19 Beta 3
Removed in No
Introduction commit 1d92e0c2cc47 — Add password expiration warnings.
Commit date 2026-02-11
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG19 Beta 3 604800 s 7 d

How it works

PostgreSQL describes password_expiration_warning_threshold as follows: “Threshold for password expiration warnings.” A configuration reload applies the value to the server without a full restart. The atlas measures it in PG19 Beta 3; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

After successful password authentication, PostgreSQL warns when a role with VALID UNTIL has less than this interval remaining. Zero disables the warning; the default seven-day window is advisory and does not create, rotate, or extend credentials, and non-password authentication does not make password expiry management automatic.

Read it together with password_encryption, authentication_timeout, md5_password_warnings, hba_file. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Roll out through staged clients, validate certificate selection and expiry warnings, and monitor authentication failures. Keep a tested fallback and treat file permissions and secret rotation as part of the same change.
OLAP Apply the same security policy to batch drivers and long-lived ETL connections. Test clients that omit SNI, credential-expiry automation, reload behavior, and certificate-chain compatibility.
Small nodes Prefer a simple, documented TLS and credential policy. Do not enable multi-certificate routing without a test for every hostname and fallback path, and never weaken verification to hide configuration mistakes.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG19 Beta 3 unmodified; OLAP: PG19 Beta 3 unmodified; CRIT: PG19 Beta 3 unmodified; TINY: PG19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for password_expiration_warning_threshold as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports sighup context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Depending on beta behavior in production without retesting the PostgreSQL 19 final release.

password_encryption · authentication_timeout · md5_password_warnings · hba_file

References

16 - port

port is the PostgreSQL setting that defines the TCP port the server listens on.
Note

Fact — official short description: “Sets the TCP port the server listens on.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value165535
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value5432
5432

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 5432 5432

How it works

port sets the TCP port the server listens on. One port is used for every TCP listener address and becomes part of client connection strings, service discovery, firewall rules, and health checks.

port is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

The listener endpoint combines listen_addresses and port at startup, while pg_hba.conf, TLS, firewalls, routing, and service discovery determine which clients can use it.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set port from the service topology and expose only required interfaces or ports. Validate poolers, health checks, pg_hba.conf, firewalls, failover, and restart sequencing together.
OLAP Use an explicit analytical endpoint or network when isolation is required, but keep connection information consistent across failover targets.
Small nodes Prefer local-only exposure unless remote access is required. Preserve a tested administrative route before changing port and restarting.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload or SET to activate port, although it requires a controlled server restart.
  • Assuming a bound address or port grants access; pg_hba.conf and operating-system or network controls still apply.
  • Changing a startup-only endpoint without updating discovery, health checks, firewalls, clients, and the administrative recovery path.
  • Changing port globally without a rollback plan and a client or operational compatibility test.

listen_addresses · max_connections · reserved_connections · superuser_reserved_connections · unix_socket_directories

References

17 - reserved_connections

reserved_connections is the PostgreSQL setting that defines the number of connection slots reserved for roles with privileges of pg_use_reserved_connections.
Note

Fact — official short description: “Sets the number of connection slots reserved for roles with privileges of pg_use_reserved_connections.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value0262143
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value0
0

Lifecycle

Fact Value
First observed PG16
Present in PG16–19 Beta 3
Removed in No
Introduction commit 6e2775e4d4e4 — Add new GUC reserved_connections.
Commit date 2023-01-20
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG16–19 Beta 3 0 0

How it works

reserved_connections sets the number of connection slots reserved for roles with privileges of pg_use_reserved_connections. These slots become available only to roles granted pg_use_reserved_connections and sit above ordinary capacity but below superuser-only reserves.

reserved_connections is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

reserved_connections and superuser_reserved_connections carve privileged tiers from max_connections; poolers, monitoring, replication, maintenance, and failover must all fit the same total backend budget.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Size reserved_connections inside max_connections from the number of independent emergency actors, pooler behavior, and failover operations. Test that ordinary saturation still leaves usable administrative access.
OLAP Reserve enough slots for control, monitoring, and cancellation around heavy analytical sessions, but do not let reserves consume an excessive share of a deliberately small backend pool.
Small nodes Keep reserved_connections modest relative to max_connections while preserving at least one tested emergency path; reserved slots are capacity unavailable to ordinary clients at saturation.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG16–19 Beta 3 unmodified; OLAP: PG16–19 Beta 3 unmodified; CRIT: PG16–19 Beta 3 unmodified; TINY: PG16–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload or SET to activate reserved_connections, although it requires a controlled server restart.
  • Counting reserved slots outside max_connections even though every tier consumes the same total ceiling.
  • Reserving too little for incident response or so much that ordinary application capacity collapses at saturation.
  • Sizing ordinary, reserved, and superuser-reserved slots without ensuring their sum fits max_connections.

listen_addresses · port · max_connections · superuser_reserved_connections · unix_socket_directories

References

18 - scram_iterations

scram_iterations is the PostgreSQL setting that defines the iteration count for SCRAM secret generation.
Note

Fact — official short description: “Sets the iteration count for SCRAM secret generation.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Value
Raw unit
Range , Value12147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Authentication
Upstream classification
Latest boot value , Value4096
4096

Lifecycle

Fact Value
First observed PG16
Present in PG16–19 Beta 3
Removed in No
Introduction commit b577743000cd — Make SCRAM iteration count configurable
Commit date 2023-03-27
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG16–19 Beta 3 4096 4096

How it works

scram_iterations is embedded in every newly generated SCRAM-SHA-256 verifier. Raising it increases offline-guessing cost but also increases legitimate password-setting and authentication work; existing verifiers keep the iteration count with which they were created until their passwords are reset.

It is a USER-context setting, so the session that executes CREATE ROLE or ALTER ROLE determines the count written into the new verifier. Role, database, or application-specific overrides can therefore create a mixture of counts even when postgresql.conf has one value.

PostgreSQL warns that when a role’s stored count differs from the configured server value, an unauthenticated observer can distinguish response behavior and infer that the role exists. A count change therefore requires uniform session policy and rotation of all SCRAM verifiers, not only a GUC edit.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Choose one count through a security and authentication-latency benchmark, enforce it in every password-management session, and rotate all role passwords so stored verifiers converge. Load-test reconnect storms and failover before raising it.
OLAP Use the same count for analytical roles; workload class is not a reason to expose a distinct verifier count. Schedule credential rotation so long-lived service accounts do not retain the old count.
Small nodes Keep the upstream count unless testing justifies a change. A smaller server should reduce connection churn with pooling, but must still keep all generated verifiers at one consistent count.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG16–19 Beta 3 unmodified; OLAP: PG16–19 Beta 3 unmodified; CRIT: PG16–19 Beta 3 unmodified; TINY: PG16–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing the GUC without resetting existing passwords; their verifiers retain the old count.
  • Allowing role or database session defaults to generate verifiers with counts different from postgresql.conf, creating a role-existence side channel.
  • Raising the count without load-testing authentication storms, failover, pooler reconnects, and password rotation jobs.
  • Assuming a higher count repairs weak passwords or compensates for leaked verifier material.

password_encryption · md5_password_warnings · authentication_timeout · oauth_validator_libraries · krb_server_keyfile

References

19 - ssl

ssl is the PostgreSQL setting that controls whether PostgreSQL enables SSL connections.
Note

Fact — official short description: “Enables SSL connections.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 off off

How it works

ssl enables SSL connections. Turning it on makes TLS listeners available when certificate and key material are valid; pg_hba.conf hostssl rules are what require TLS for selected clients.

ssl is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Treat ssl as transport-security policy rather than a performance knob. Follow the organization’s TLS baseline and test certificate rotation, reload, and every client class.
OLAP Use the same TLS floor for analytical traffic; benchmark only after correctness because bulk transfer may expose CPU cost but is not a reason to accept obsolete protocols.
Small nodes Keep ssl simple and secure, using managed certificates and library defaults reviewed for the installed OpenSSL version. Rehearse renewal before expiry.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP on different 'on'
OLAP on different 'on'
CRIT on different 'on'
TINY on different 'on'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = on (dcs); OLAP: PG9.0–19 Beta 3 = on (dcs); CRIT: PG9.0–19 Beta 3 = on (dcs); TINY: PG9.0–19 Beta 3 = on (dcs). Advice, pending human review — Editorial inference: All templates enable TLS so certificate-based encrypted transport is available as a uniform baseline; pg_hba.conf must still require it where policy demands.

Common pitfalls

  • Editing ssl without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl globally without a rollback plan and a client or operational compatibility test.

ssl_cert_file · ssl_key_file · ssl_ca_file · ssl_crl_file · ssl_min_protocol_version

References

20 - ssl_ca_file

ssl_ca_file is the PostgreSQL setting that identifies the location of the SSL certificate authority file.
Note

Fact — official short description: “Location of the SSL certificate authority file.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG9.2
Present in PG9.2–19 Beta 3
Removed in No
Introduction commit a445cb92ef5b — Add parameters for controlling locations of server-side SSL files
Commit date 2012-02-22
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.2–19 Beta 3 "" empty string

How it works

ssl_ca_file identifies the location of the SSL certificate authority file. The PEM CA bundle defines trust roots for client-certificate verification and the acceptable-authority list sent during TLS negotiation.

ssl_ca_file is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Use ssl_ca_file only for a reviewed CA bundle that is intended to validate client certificates. Plan overlapping trust roots during CA rotation, restrict file writes, and test every cert/clientcert HBA path after reload.
OLAP Analytical access uses the same trust roots unless it is a deliberately separate PKI realm. Do not broaden the CA bundle to solve a client deployment problem.
Small nodes Leave it empty when client-certificate verification is not used. If enabled, keep the bundle minimal, monitored for expiry, and identical on failover nodes.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP /pg/cert/ca.crt different '/pg/cert/ca.crt'
OLAP /pg/cert/ca.crt different '/pg/cert/ca.crt'
CRIT /pg/cert/ca.crt different '/pg/cert/ca.crt'
TINY /pg/cert/ca.crt different '/pg/cert/ca.crt'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.2–19 Beta 3 = /pg/cert/ca.crt (dcs); OLAP: PG9.2–19 Beta 3 = /pg/cert/ca.crt (dcs); CRIT: PG9.2–19 Beta 3 = /pg/cert/ca.crt (dcs); TINY: PG9.2–19 Beta 3 = /pg/cert/ca.crt (dcs). Advice, pending human review — Editorial inference: The common managed CA path aligns trust material across profiles and supports repeatable certificate deployment.

Common pitfalls

  • Editing ssl_ca_file without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_ca_file globally without a rollback plan and a client or operational compatibility test.

ssl · ssl_cert_file · ssl_key_file · ssl_crl_file · ssl_min_protocol_version

References

21 - ssl_cert_file

ssl_cert_file is the PostgreSQL setting that identifies the location of the SSL server certificate file.
Note

Fact — official short description: “Location of the SSL server certificate file.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Valueserver.crt
server.crt

Lifecycle

Fact Value
First observed PG9.2
Present in PG9.2–19 Beta 3
Removed in No
Introduction commit a445cb92ef5b — Add parameters for controlling locations of server-side SSL files
Commit date 2012-02-22
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.2–19 Beta 3 server.crt server.crt

How it works

ssl_cert_file identifies the location of the SSL server certificate file. The PEM file supplies the server leaf certificate and may include intermediate certificates needed to present a complete chain to clients.

ssl_cert_file is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Deploy a certificate whose key usage, SANs, validity, and chain match every advertised database endpoint. Test reload and a fresh client handshake before removing the previous certificate.
OLAP Analytical endpoints need the same identity guarantees; if they use a separate name, issue the correct SAN rather than reusing a mismatched certificate.
Small nodes Automate renewal and expiry alerts. A small node gains nothing from a shorter chain if clients cannot build trust; keep only the necessary leaf and intermediates.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP /pg/cert/server.crt different '/pg/cert/server.crt'
OLAP /pg/cert/server.crt different '/pg/cert/server.crt'
CRIT /pg/cert/server.crt different '/pg/cert/server.crt'
TINY /pg/cert/server.crt different '/pg/cert/server.crt'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.2–19 Beta 3 = /pg/cert/server.crt (dcs); OLAP: PG9.2–19 Beta 3 = /pg/cert/server.crt (dcs); CRIT: PG9.2–19 Beta 3 = /pg/cert/server.crt (dcs); TINY: PG9.2–19 Beta 3 = /pg/cert/server.crt (dcs). Advice, pending human review — Editorial inference: The common managed server-certificate path aligns every profile with the same certificate lifecycle layout.

Common pitfalls

  • Editing ssl_cert_file without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_cert_file globally without a rollback plan and a client or operational compatibility test.

ssl · ssl_key_file · ssl_ca_file · ssl_crl_file · ssl_min_protocol_version

References

22 - ssl_ciphers

ssl_ciphers is the PostgreSQL setting that defines the list of allowed TLSv1.2 (and lower) ciphers.
Note

Fact — official short description: “Sets the list of allowed TLSv1.2 (and lower) ciphers.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , ValueHIGH:MEDIUM:+3DES:!aNULL
HIGH:MEDIUM:+3DES:!aNULL

Lifecycle

Fact Value
First observed PG9.1
Present in PG9.1–19 Beta 3
Removed in No
Introduction commit Not asserted: the name already exists at the 2008 Git-history boundary
Commit date ≤ 2008-01-01
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.1–9.2 ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
PG9.3 DEFAULT:!LOW:!EXP:!MD5:@STRENGTH DEFAULT:!LOW:!EXP:!MD5:@STRENGTH
PG9.4–19 Beta 3 HIGH:MEDIUM:+3DES:!aNULL HIGH:MEDIUM:+3DES:!aNULL

How it works

The ssl_ciphers name already exists in PostgreSQL’s GUC source at the project’s 2008 history boundary and in PG9.0, where it is compiled only under USE_SSL. The audited PG9.0 fallback build does not enable OpenSSL, so the name first appears in the PG9.1 official-image snapshot; that matrix boundary reflects build capability, not the feature’s original invention.

The OpenSSL cipher string governs TLS 1.2 and older handshakes. PostgreSQL 18 and later configure TLS 1.3 suites separately with ssl_tls13_ciphers. A SIGHUP reload changes the policy for new TLS contexts and connections but does not renegotiate sessions that are already established.

Treat ssl_ciphers as one part of a complete transport policy with ssl, pg_hba.conf, certificate and key files, CA and revocation settings, protocol floors and ceilings, ssl_groups, and client capabilities. Validate the exact installed OpenSSL build because accepted cipher names and security levels are library-dependent.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Treat ssl_ciphers as transport-security policy rather than a performance knob. Follow the organization’s TLS baseline and test certificate rotation, reload, and every client class.
OLAP Use the same TLS floor for analytical traffic; benchmark only after correctness because bulk transfer may expose CPU cost but is not a reason to accept obsolete protocols.
Small nodes Keep ssl_ciphers simple and secure, using managed certificates and library defaults reviewed for the installed OpenSSL version. Rehearse renewal before expiry.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.1–19 Beta 3 unmodified; OLAP: PG9.1–19 Beta 3 unmodified; CRIT: PG9.1–19 Beta 3 unmodified; TINY: PG9.1–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_ciphers without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_ciphers globally without a rollback plan and a client or operational compatibility test.

ssl_tls13_ciphers · ssl_min_protocol_version · ssl_max_protocol_version · ssl_prefer_server_ciphers · ssl_groups

References

23 - ssl_crl_dir

ssl_crl_dir is the PostgreSQL setting that identifies the location of the SSL certificate revocation list directory.
Note

Fact — official short description: “Location of the SSL certificate revocation list directory.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG14
Present in PG14–19 Beta 3
Removed in No
Introduction commit f5465fade908 — Allow specifying CRL directory
Commit date 2021-02-18
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG14–19 Beta 3 "" empty string

How it works

ssl_crl_dir names a directory of client-certificate revocation lists. OpenSSL requires hashed lookup links, so the directory must be prepared again with openssl rehash or c_rehash whenever CRLs are added or replaced. It supplements ssl_crl_file; both sources can be active.

Changing the directory path is a SIGHUP-context configuration change, but CRL files inside the configured directory are loaded on demand at connection time. A newly installed and correctly rehashed CRL can therefore be used immediately by new connections without a PostgreSQL reload.

This differs from ssl_crl_file, whose file content is loaded at server startup or configuration reload. Existing TLS sessions are not retroactively revoked by either setting; test revocation with a fresh client-certificate handshake and monitor CRL issuer, signature, and expiry.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Manage ssl_crl_dir as an issuer-indexed CRL repository: add current CRLs, run openssl rehash or c_rehash, and test revocation with a new connection. Use it when on-demand multi-issuer updates are operationally maintained.
OLAP Analytical certificates use the same revocation repository. Do not create a separate stale directory merely because those clients connect less often.
Small nodes Keep the directory empty unless automated CRL retrieval, rehashing, expiry monitoring, and failover synchronization are in place; an unmaintained directory creates false assurance.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG14–19 Beta 3 unmodified; OLAP: PG14–19 Beta 3 unmodified; CRIT: PG14–19 Beta 3 unmodified; TINY: PG14–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Adding or replacing a CRL without running openssl rehash or c_rehash, leaving it undiscoverable by OpenSSL.
  • Reloading PostgreSQL but not refreshing an expired CRL, or assuming a directory change applies retroactively to established TLS sessions.
  • Treating ssl_crl_dir like ssl_crl_file and missing that directory CRLs are loaded on demand for new connections.
  • Synchronizing the directory path but not its CRLs and hash links to every failover node.

ssl · ssl_cert_file · ssl_key_file · ssl_ca_file · ssl_crl_file · ssl_min_protocol_version

References

24 - ssl_crl_file

ssl_crl_file is the PostgreSQL setting that identifies the location of the SSL certificate revocation list file.
Note

Fact — official short description: “Location of the SSL certificate revocation list file.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG9.2
Present in PG9.2–19 Beta 3
Removed in No
Introduction commit a445cb92ef5b — Add parameters for controlling locations of server-side SSL files
Commit date 2012-02-22
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.2–19 Beta 3 "" empty string

How it works

ssl_crl_file identifies the location of the SSL certificate revocation list file. The PEM revocation list is consulted when validating client certificates and must be refreshed as issuers publish new revocation state.

ssl_crl_file is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Refresh ssl_crl_file from the issuing CA before its next-update deadline, validate its signature and issuer coverage, reload PostgreSQL, and prove that a newly revoked client certificate is rejected.
OLAP Analytical clients follow the same revocation policy; do not defer CRL refresh because their sessions are longer or less frequent.
Small nodes If a managed CRL feed is unavailable, document that client-certificate revocation is not current rather than relying on a stale file. Keep the file and reload process monitored on every failover node.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.2–19 Beta 3 unmodified; OLAP: PG9.2–19 Beta 3 unmodified; CRIT: PG9.2–19 Beta 3 unmodified; TINY: PG9.2–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_crl_file without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_crl_file globally without a rollback plan and a client or operational compatibility test.

ssl · ssl_cert_file · ssl_key_file · ssl_ca_file · ssl_min_protocol_version

References

25 - ssl_dh_params_file

ssl_dh_params_file is the PostgreSQL setting that identifies the location of the SSL DH parameters file.
Note

Fact — official short description: “Location of the SSL DH parameters file.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG10
Present in PG10–19 Beta 3
Removed in No
Introduction commit c0a15e07cd71 — Always use 2048 bit DH parameters for OpenSSL ephemeral DH ciphers.
Commit date 2017-07-31
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG10–19 Beta 3 "" empty string

How it works

ssl_dh_params_file identifies the location of the SSL DH parameters file. An empty string means use compiled-in default parameters. An empty value uses PostgreSQL’s compiled-in DH parameters; the file matters only for cipher suites that perform finite-field Diffie-Hellman exchange.

ssl_dh_params_file is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Use a custom ssl_dh_params_file only when finite-field ephemeral-DH cipher suites are intentionally supported and the parameters are generated by an approved current process. Test OpenSSL acceptance and reload before rollout.
OLAP Analytical throughput is not a reason to weaken DH parameters. Prefer the same reviewed key-exchange policy and measure only after client compatibility is proven.
Small nodes Leave the file empty to use PostgreSQL’s compiled-in parameters unless policy requires a managed custom set; generating or loading custom parameters does not improve capacity.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG10–19 Beta 3 unmodified; OLAP: PG10–19 Beta 3 unmodified; CRIT: PG10–19 Beta 3 unmodified; TINY: PG10–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_dh_params_file without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_dh_params_file globally without a rollback plan and a client or operational compatibility test.

ssl_ciphers · ssl_tls13_ciphers · ssl_min_protocol_version · ssl_max_protocol_version · ssl_prefer_server_ciphers · ssl_groups

References

26 - ssl_ecdh_curve

ssl_ecdh_curve is the PostgreSQL setting that defines the curve to use for ECDH.
Note

Fact — official short description: “Sets the curve to use for ECDH.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Valueprime256v1
prime256v1

Lifecycle

Fact Value
First observed PG9.4
Present in PG9.4–17
Removed in PG18
Introduction commit 3164721462d5 — SSL: Support ECDH key exchange
Commit date 2013-12-07
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.4–17 prime256v1 prime256v1

How it works

ssl_ecdh_curve sets the curve to use for ECDH. This single-curve control existed through PostgreSQL 17 and was replaced in PostgreSQL 18 by the multi-group ssl_groups setting.

ssl_ecdh_curve is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Do not tune ssl_ecdh_curve on PostgreSQL 18+: migrate reviewed policy to ssl_groups. On older releases, change it only with TLS-library compatibility testing.
OLAP Use the same reviewed key-exchange policy as OLTP; analytical throughput is not a reason to retain a removed single-curve control.
Small nodes Keep the supported secure default on PostgreSQL 17 and earlier, then validate the ssl_groups replacement during upgrade.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG17; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.4–17 unmodified; OLAP: PG9.4–17 unmodified; CRIT: PG9.4–17 unmodified; TINY: PG9.4–17 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_ecdh_curve without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Leaving the removed name in PostgreSQL 18 configuration instead of migrating to ssl_groups.

ssl_ciphers · ssl_tls13_ciphers · ssl_min_protocol_version · ssl_max_protocol_version · ssl_prefer_server_ciphers · ssl_groups

References

27 - ssl_groups

ssl_groups is the PostgreSQL setting that defines the group(s) to use for Diffie-Hellman key exchange.
Note

Fact — official short description: “Sets the group(s) to use for Diffie-Hellman key exchange.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , ValueX25519:prime256v1
X25519:prime256v1

Lifecycle

Fact Value
First observed PG18
Present in PG18–19 Beta 3
Removed in No
Introduction commit 3d1ef3a15c3e — Support configuring multiple ECDH curves
Commit date 2024-10-24
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG18–19 Beta 3 X25519:prime256v1 X25519:prime256v1

How it works

ssl_groups sets the group(s) to use for Diffie-Hellman key exchange. Multiple groups can be specified using a colon-separated list. PostgreSQL 18 accepts an ordered colon-separated list, replacing the former single ssl_ecdh_curve choice and covering supported key-exchange groups.

ssl_groups is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Treat ssl_groups as transport-security policy rather than a performance knob. Follow the organization’s TLS baseline and test certificate rotation, reload, and every client class.
OLAP Use the same TLS floor for analytical traffic; benchmark only after correctness because bulk transfer may expose CPU cost but is not a reason to accept obsolete protocols.
Small nodes Keep ssl_groups simple and secure, using managed certificates and library defaults reviewed for the installed OpenSSL version. Rehearse renewal before expiry.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG18–19 Beta 3 unmodified; OLAP: PG18–19 Beta 3 unmodified; CRIT: PG18–19 Beta 3 unmodified; TINY: PG18–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_groups without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_groups globally without a rollback plan and a client or operational compatibility test.

ssl_ciphers · ssl_tls13_ciphers · ssl_min_protocol_version · ssl_max_protocol_version · ssl_prefer_server_ciphers

References

28 - ssl_key_file

ssl_key_file is the PostgreSQL setting that identifies the location of the SSL server private key file.
Note

Fact — official short description: “Location of the SSL server private key file.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Valueserver.key
server.key

Lifecycle

Fact Value
First observed PG9.2
Present in PG9.2–19 Beta 3
Removed in No
Introduction commit a445cb92ef5b — Add parameters for controlling locations of server-side SSL files
Commit date 2012-02-22
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.2–19 Beta 3 server.key server.key

How it works

ssl_key_file identifies the location of the SSL server private key file. The file contains the private key matching ssl_cert_file; PostgreSQL enforces restrictive ownership and permissions before accepting it.

ssl_key_file is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Keep ssl_key_file owned by the PostgreSQL service account with PostgreSQL-accepted restrictive permissions, ensure it matches ssl_cert_file, and rotate it through an audited secret-delivery path.
OLAP Use the same private-key controls for analytical nodes; workload type never justifies a shared, group-writable, or copied key outside the managed PKI process.
Small nodes Prefer one managed key with expiry/renewal tests and protected backups. If it is encrypted, test ssl_passphrase_command and reload behavior before an unattended restart.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP /pg/cert/server.key different '/pg/cert/server.key'
OLAP /pg/cert/server.key different '/pg/cert/server.key'
CRIT /pg/cert/server.key different '/pg/cert/server.key'
TINY /pg/cert/server.key different '/pg/cert/server.key'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.2–19 Beta 3 = /pg/cert/server.key (dcs); OLAP: PG9.2–19 Beta 3 = /pg/cert/server.key (dcs); CRIT: PG9.2–19 Beta 3 = /pg/cert/server.key (dcs); TINY: PG9.2–19 Beta 3 = /pg/cert/server.key (dcs). Advice, pending human review — Editorial inference: The common managed private-key path pairs with the server certificate and centralizes ownership and renewal conventions.

Common pitfalls

  • Editing ssl_key_file without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Installing a private key with ownership or permissions that PostgreSQL rejects, or leaking it to a readable group.

ssl · ssl_cert_file · ssl_ca_file · ssl_crl_file · ssl_min_protocol_version

References

29 - ssl_max_protocol_version

ssl_max_protocol_version is the PostgreSQL setting that defines the maximum SSL/TLS protocol version to use.
Note

Fact — official short description: “Sets the maximum SSL/TLS protocol version to use.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value"", TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG12
Present in PG12–19 Beta 3
Removed in No
Introduction commit e73e67c71959 — Add settings to control SSL/TLS protocol version
Commit date 2018-11-20
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG12–19 Beta 3 "" empty string

How it works

ssl_max_protocol_version sets the maximum SSL/TLS protocol version to use. An empty value imposes no PostgreSQL-specific ceiling beyond the SSL library, while a named version can intentionally block newer protocols for compatibility testing.

ssl_max_protocol_version is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Treat ssl_max_protocol_version as transport-security policy rather than a performance knob. Follow the organization’s TLS baseline and test certificate rotation, reload, and every client class.
OLAP Use the same TLS floor for analytical traffic; benchmark only after correctness because bulk transfer may expose CPU cost but is not a reason to accept obsolete protocols.
Small nodes Keep ssl_max_protocol_version simple and secure, using managed certificates and library defaults reviewed for the installed OpenSSL version. Rehearse renewal before expiry.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG12–19 Beta 3 unmodified; OLAP: PG12–19 Beta 3 unmodified; CRIT: PG12–19 Beta 3 unmodified; TINY: PG12–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_max_protocol_version without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_max_protocol_version globally without a rollback plan and a client or operational compatibility test.

ssl_ciphers · ssl_tls13_ciphers · ssl_min_protocol_version · ssl_prefer_server_ciphers · ssl_groups

References

30 - ssl_min_protocol_version

ssl_min_protocol_version is the PostgreSQL setting that defines the minimum SSL/TLS protocol version to use.
Note

Fact — official short description: “Sets the minimum SSL/TLS protocol version to use.”

Identity

Type , Valueenum
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , ValueTLSv1, TLSv1.1, TLSv1.2, TLSv1.3
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , ValueTLSv1.2
TLSv1.2

Lifecycle

Fact Value
First observed PG12
Present in PG12–19 Beta 3
Removed in No
Introduction commit e73e67c71959 — Add settings to control SSL/TLS protocol version
Commit date 2018-11-20
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG12 TLSv1 TLSv1
PG13–19 Beta 3 TLSv1.2 TLSv1.2

How it works

ssl_min_protocol_version sets the minimum SSL/TLS protocol version to use. Connections negotiating below the floor are rejected; the upstream default moved from TLSv1 in PostgreSQL 12 to TLSv1.2 in PostgreSQL 13.

ssl_min_protocol_version is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Treat ssl_min_protocol_version as transport-security policy rather than a performance knob. Follow the organization’s TLS baseline and test certificate rotation, reload, and every client class.
OLAP Use the same TLS floor for analytical traffic; benchmark only after correctness because bulk transfer may expose CPU cost but is not a reason to accept obsolete protocols.
Small nodes Keep ssl_min_protocol_version simple and secure, using managed certificates and library defaults reviewed for the installed OpenSSL version. Rehearse renewal before expiry.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG12–19 Beta 3 unmodified; OLAP: PG12–19 Beta 3 unmodified; CRIT: PG12–19 Beta 3 unmodified; TINY: PG12–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_min_protocol_version without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Changing ssl_min_protocol_version globally without a rollback plan and a client or operational compatibility test.

ssl_ciphers · ssl_tls13_ciphers · ssl_max_protocol_version · ssl_prefer_server_ciphers · ssl_groups

References

31 - ssl_passphrase_command

ssl_passphrase_command is the PostgreSQL setting that defines the command to obtain passphrases for SSL.
Note

Fact — official short description: “Command to obtain passphrases for SSL.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG11
Present in PG11–19 Beta 3
Removed in No
Introduction commit 8a3d9425290f — Add ssl_passphrase_command setting
Commit date 2018-02-26
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG11–19 Beta 3 "" empty string

How it works

ssl_passphrase_command is an external helper invoked when PostgreSQL must decrypt an SSL file such as an encrypted private key. The helper must write the passphrase to standard output and exit with status zero; PostgreSQL strips one trailing newline from the output.

Within the configured command, %p is replaced by a prompt string that can contain whitespace and therefore must be quoted safely; %% emits a literal percent. The command runs as the PostgreSQL service account, and its environment, path, arguments, output, and error logging must not expose the secret.

It has SIGHUP context, but whether an encrypted key can be replaced during reload also depends on ssl_passphrase_command_supports_reload. A noninteractive keychain/file helper can support reload; a TTY prompt is normally suitable only for controlled startup, and Windows has additional reload requirements.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Use an absolute-path, minimal, noninteractive helper backed by a protected keychain or file descriptor. Test exact stdout, exit status, %p quoting, timeout/failure, startup, reload, and failover-node availability without logging the passphrase.
OLAP Use the identical helper and secret source on analytical nodes; workload class does not change the private-key trust requirement. Test unattended restart before scheduling certificate rotation.
Small nodes Prefer the simplest auditable helper that can restart unattended. If a TTY prompt is retained, document that reload cannot replace an encrypted key unless supports_reload is safely enabled.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG11–19 Beta 3 unmodified; OLAP: PG11–19 Beta 3 unmodified; CRIT: PG11–19 Beta 3 unmodified; TINY: PG11–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Printing anything except the passphrase to standard output or returning a nonzero status.
  • Failing to quote %p even though the substituted prompt can contain whitespace, or forgetting that %% is required for a literal percent.
  • Exposing the passphrase through command arguments, process listings, environment variables, shell tracing, stderr, or server logs.
  • Deploying a helper that works interactively on one primary but fails during unattended restart, reload, or failover.

ssl · ssl_cert_file · ssl_key_file · ssl_ca_file · ssl_crl_file · ssl_min_protocol_version

References

32 - ssl_passphrase_command_supports_reload

ssl_passphrase_command_supports_reload is the PostgreSQL setting that controls whether “ssl_passphrase_command” is called during server reload.
Note

Fact — official short description: “Controls whether “ssl_passphrase_command” is called during server reload.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG11
Present in PG11–19 Beta 3
Removed in No
Introduction commit 8a3d9425290f — Add ssl_passphrase_command setting
Commit date 2018-02-26
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG11–19 Beta 3 off off

How it works

ssl_passphrase_command_supports_reload decides whether ssl_passphrase_command may be invoked during configuration reload when a replacement SSL key needs a passphrase. When it is off, the command is ignored during reload and PostgreSQL does not reload the SSL configuration if a passphrase is required.

The setting has SIGHUP context and affects replacement TLS material used by new handshakes; existing TLS sessions are not renegotiated. It should be on only when the helper is noninteractive, reliably available, and safe to invoke in the running server environment.

On Windows this setting must be on, because the Windows process model causes every connection to perform a configuration reload. That platform requirement overrides the usual Unix-oriented choice to keep a TTY-dependent helper startup-only.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Enable this only after ssl_passphrase_command is proven noninteractive, idempotent, fast, and available during reload; otherwise a certificate refresh can fail operationally.
OLAP Use the same reload capability across workload classes so certificate rotation behavior is predictable on every node.
Small nodes On Windows this setting must be on. On Unix, leave it off only when reload-time passphrase retrieval is unnecessary; if unattended rotation is required, enable it after testing the helper in the server environment.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG11–19 Beta 3 unmodified; OLAP: PG11–19 Beta 3 unmodified; CRIT: PG11–19 Beta 3 unmodified; TINY: PG11–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Setting it to off on Windows, where PostgreSQL requires it to be on because each connection performs a configuration reload.
  • Enabling reload support while the passphrase helper is interactive, slow, unavailable, or unsafe to invoke repeatedly.
  • Assuming a reload renegotiates existing sessions; replacement TLS material affects new handshakes only.
  • Failing to inspect server logs after reload; if passphrase retrieval fails, PostgreSQL keeps the previous SSL configuration.

ssl · ssl_cert_file · ssl_key_file · ssl_ca_file · ssl_crl_file · ssl_min_protocol_version

References

33 - ssl_prefer_server_ciphers

ssl_prefer_server_ciphers is the PostgreSQL setting that gives priority to server ciphersuite order.
Note

Fact — official short description: “Give priority to server ciphersuite order.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Valueon
on

Lifecycle

Fact Value
First observed PG9.4
Present in PG9.4–19 Beta 3
Removed in No
Introduction commit ef3267523d1e — SSL: Add configuration option to prefer server cipher order
Commit date 2013-12-07
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.4–19 Beta 3 on on

How it works

ssl_prefer_server_ciphers gives priority to server ciphersuite order. It affects server-versus-client ordering only for TLS 1.2 and older; TLS 1.3 negotiation does not use this switch.

ssl_prefer_server_ciphers is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Treat ssl_prefer_server_ciphers as transport-security policy rather than a performance knob. Follow the organization’s TLS baseline and test certificate rotation, reload, and every client class.
OLAP Use the same TLS floor for analytical traffic; benchmark only after correctness because bulk transfer may expose CPU cost but is not a reason to accept obsolete protocols.
Small nodes Keep ssl_prefer_server_ciphers simple and secure, using managed certificates and library defaults reviewed for the installed OpenSSL version. Rehearse renewal before expiry.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.4–19 Beta 3 unmodified; OLAP: PG9.4–19 Beta 3 unmodified; CRIT: PG9.4–19 Beta 3 unmodified; TINY: PG9.4–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_prefer_server_ciphers without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Assuming it controls TLS 1.3 cipher ordering.

ssl_ciphers · ssl_tls13_ciphers · ssl_min_protocol_version · ssl_max_protocol_version · ssl_groups

References

34 - ssl_renegotiation_limit

ssl_renegotiation_limit — Set the amount of traffic to send and receive before renegotiating the encryption keys. Observed in PG9.0–9.4; its last measured boot default is 0 B in PG9.4, with user context. It was removed in PG9.5.
Note

Fact — official short description: “Set the amount of traffic to send and receive before renegotiating the encryption keys.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , ValuekB
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Security and Authentication
Upstream classification
Latest boot value , Value0
0 B

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–9.4
Removed in PG9.5
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–9.4 0 kB 0 B

How it works

PostgreSQL describes ssl_renegotiation_limit as follows: “Set the amount of traffic to send and receive before renegotiating the encryption keys.” It can be changed per session, which makes plan or behavior comparisons possible without changing every workload. The atlas measures it in PG9.0–9.4; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

This setting initiated TLS key renegotiation after a traffic threshold. PostgreSQL removed it in 9.5 as protocol/library behavior and security guidance moved away from renegotiation; modern TLS policy should use supported protocol versions, ciphers, certificates, and ordinary connection rotation.

Read it together with ssl_min_protocol_version, ssl_max_protocol_version, ssl_ciphers, ssl. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Do not add this retired name to a current OLTP configuration. Translate its intent to the documented successor, test the migration under connection and write concurrency, and remove stale automation that still emits it.
OLAP For an upgrade or analytical estate, inventory every generated configuration before cutover. Map the old control to its successor and compare plans, throughput, WAL, or logging behavior rather than assuming the old numeric value is portable.
Small nodes Delete the obsolete override after recording why it existed. On a small node, prefer the successor’s default until measurements justify a new value; an unknown startup parameter can otherwise stop the server.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG9.4; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–9.4 unmodified; OLAP: PG9.0–9.4 unmodified; CRIT: PG9.0–9.4 unmodified; TINY: PG9.0–9.4 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for ssl_renegotiation_limit as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports user context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Copying the removed name into a modern postgresql.conf instead of migrating to its documented successor.

ssl_min_protocol_version · ssl_max_protocol_version · ssl_ciphers · ssl

References

35 - ssl_sni

ssl_sni — Sets whether to interpret SNI extensions in SSL connections. Observed in PG19 Beta 3; its last measured boot default is off in PG19 Beta 3, with sighup context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA.
Note

Fact — official short description: “Sets whether to interpret SNI extensions in SSL connections.”

Identity

Type , Valuebool
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Valueoff
off

Lifecycle

Fact Value
First observed PG19 Beta 3
Present in PG19 Beta 3
Removed in No
Introduction commit 4f433025f666 — ssl: Serverside SNI support for libpq
Commit date 2026-03-18
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG19 Beta 3 off off

How it works

PostgreSQL describes ssl_sni as follows: “Sets whether to interpret SNI extensions in SSL connections.” A configuration reload applies the value to the server without a full restart. The atlas measures it in PG19 Beta 3; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

When enabled with TLS, PostgreSQL reads the client’s Server Name Indication and selects credentials through hosts_file. Hostnames match case-insensitively; /no_sni/ and * provide explicit fallback behavior. Certificate identity, client verification, CRLs, permissions, and reload failures still require independent validation.

Read it together with hosts_file, ssl, ssl_cert_file, ssl_key_file. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Roll out through staged clients, validate certificate selection and expiry warnings, and monitor authentication failures. Keep a tested fallback and treat file permissions and secret rotation as part of the same change.
OLAP Apply the same security policy to batch drivers and long-lived ETL connections. Test clients that omit SNI, credential-expiry automation, reload behavior, and certificate-chain compatibility.
Small nodes Prefer a simple, documented TLS and credential policy. Do not enable multi-certificate routing without a test for every hostname and fallback path, and never weaken verification to hide configuration mistakes.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG19 Beta 3 unmodified; OLAP: PG19 Beta 3 unmodified; CRIT: PG19 Beta 3 unmodified; TINY: PG19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for ssl_sni as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports sighup context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Depending on beta behavior in production without retesting the PostgreSQL 19 final release.

hosts_file · ssl · ssl_cert_file · ssl_key_file · ssl_ca_file

References

36 - ssl_tls13_ciphers

ssl_tls13_ciphers is the PostgreSQL setting that defines the list of allowed TLSv1.3 cipher suites.
Note

Fact — official short description: “Sets the list of allowed TLSv1.3 cipher suites.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuesighup
Takes effect after configuration reload
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / SSL
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG18
Present in PG18–19 Beta 3
Removed in No
Introduction commit 45188c2ea239 — Support configuring TLSv1.3 cipher suites
Commit date 2024-10-24
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG18–19 Beta 3 "" empty string

How it works

ssl_tls13_ciphers sets the list of allowed TLSv1.3 cipher suites. An empty string means use the default cipher suites. An empty value delegates TLS 1.3 suite selection to the SSL library default, and the syntax is distinct from ssl_ciphers.

ssl_tls13_ciphers is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value. Existing TLS sessions are not renegotiated.

It participates in the TLS context used for new handshakes. ssl enables transport, pg_hba.conf decides which connection classes require it, and the certificate, key, CA, revocation, protocol, and cipher settings must form one valid policy.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Treat ssl_tls13_ciphers as transport-security policy rather than a performance knob. Follow the organization’s TLS baseline and test certificate rotation, reload, and every client class.
OLAP Use the same TLS floor for analytical traffic; benchmark only after correctness because bulk transfer may expose CPU cost but is not a reason to accept obsolete protocols.
Small nodes Keep ssl_tls13_ciphers simple and secure, using managed certificates and library defaults reviewed for the installed OpenSSL version. Rehearse renewal before expiry.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG18–19 Beta 3 unmodified; OLAP: PG18–19 Beta 3 unmodified; CRIT: PG18–19 Beta 3 unmodified; TINY: PG18–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Editing ssl_tls13_ciphers without reloading configuration and verifying the effective value and subsequent behavior.
  • Updating only one TLS file or policy knob and leaving an invalid chain, unreadable key, or incompatible protocol set.
  • Assuming a reload renegotiates existing sessions; TLS policy changes affect new handshakes.
  • Using ssl_ciphers syntax or names for TLS 1.3 and unintentionally rejecting every intended suite.

ssl_ciphers · ssl_min_protocol_version · ssl_max_protocol_version · ssl_prefer_server_ciphers · ssl_groups

References

37 - superuser_reserved_connections

superuser_reserved_connections is the PostgreSQL setting that defines the number of connection slots reserved for superusers.
Note

Fact — official short description: “Sets the number of connection slots reserved for superusers.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value0262143
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value3
3

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 3 3

How it works

superuser_reserved_connections sets the number of connection slots reserved for superusers. These slots are usable only after ordinary and reserved_connections capacity is exhausted, preserving an emergency path for superusers.

superuser_reserved_connections is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

reserved_connections and superuser_reserved_connections carve privileged tiers from max_connections; poolers, monitoring, replication, maintenance, and failover must all fit the same total backend budget.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Size superuser_reserved_connections inside max_connections from the number of independent emergency actors, pooler behavior, and failover operations. Test that ordinary saturation still leaves usable administrative access.
OLAP Reserve enough slots for control, monitoring, and cancellation around heavy analytical sessions, but do not let reserves consume an excessive share of a deliberately small backend pool.
Small nodes Keep superuser_reserved_connections modest relative to max_connections while preserving at least one tested emergency path; reserved slots are capacity unavailable to ordinary clients at saturation.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP 10 different 10
OLAP 10 different 10
CRIT 10 different 10
TINY 10 different 10
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 = 10 (dcs); OLAP: PG9.0–19 Beta 3 = 10 (dcs); CRIT: PG9.0–19 Beta 3 = 10 (dcs); TINY: PG9.0–19 Beta 3 = 10 (dcs). Advice, pending human review — Editorial inference: Ten emergency slots preserve more operational headroom than upstream for monitoring, repair, and failover on a pooler-fronted service.

Common pitfalls

  • Expecting a reload or SET to activate superuser_reserved_connections, although it requires a controlled server restart.
  • Counting reserved slots outside max_connections even though every tier consumes the same total ceiling.
  • Reserving too little for incident response or so much that ordinary application capacity collapses at saturation.
  • Changing superuser_reserved_connections globally without a rollback plan and a client or operational compatibility test.

listen_addresses · port · max_connections · reserved_connections · unix_socket_directories

References

38 - tcp_keepalives_count

tcp_keepalives_count is the PostgreSQL setting that defines the maximum number of TCP keepalive retransmits.
Note

Fact — official short description: “Maximum number of TCP keepalive retransmits.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Value
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / TCP Settings
Upstream classification
Latest boot value , Value0
0

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 0 0

How it works

tcp_keepalives_count sets the maximum number of TCP keepalive retransmits. Number of consecutive keepalive retransmits that can be lost before a connection is considered dead. 0 means use the system default. Together with idle and interval, it determines how many unanswered probes precede failure; zero selects the operating-system default where supported.

tcp_keepalives_count is a USER-context setting. An authorized role can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

The effective failure window is derived from tcp_keepalives_idle, tcp_keepalives_interval, and tcp_keepalives_count, subject to operating-system support and any shorter network-device timeout.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Choose tcp_keepalives_count with the other keepalive controls so total failure-detection time fits load-balancer, failover, and retry budgets. Confirm the operating system implements the requested socket option.
OLAP Long analytical connections need keepalive timing shorter than intervening network idle expiry but not so aggressive that transient loss aborts healthy jobs.
Small nodes Use operating-system defaults unless a measured network failure mode requires an override; tune the complete idle/interval/count tuple, not tcp_keepalives_count alone.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing tcp_keepalives_count in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Tuning one keepalive component without calculating the full idle-plus-retransmit failure window.
  • Assuming PostgreSQL’s requested value overrides unsupported platforms or a shorter firewall and load-balancer idle policy.
  • Assuming zero means no probes when it actually selects the operating-system default.

tcp_keepalives_idle · tcp_keepalives_interval · tcp_user_timeout · client_connection_check_interval · authentication_timeout

References

39 - tcp_keepalives_idle

tcp_keepalives_idle is the PostgreSQL setting that defines the interval between issuing TCP keepalives.
Note

Fact — official short description: “Time between issuing TCP keepalives.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Values
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / TCP Settings
Upstream classification
Latest boot value , Value0
0 s

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 0 s 0 s

How it works

tcp_keepalives_idle defines the interval between issuing TCP keepalives. 0 means use the system default. It determines how long an otherwise idle TCP connection waits before the first keepalive probe; zero selects the operating-system default.

tcp_keepalives_idle is a USER-context setting. An authorized role can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

The effective failure window is derived from tcp_keepalives_idle, tcp_keepalives_interval, and tcp_keepalives_count, subject to operating-system support and any shorter network-device timeout.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Choose tcp_keepalives_idle with the other keepalive controls so total failure-detection time fits load-balancer, failover, and retry budgets. Confirm the operating system implements the requested socket option.
OLAP Long analytical connections need keepalive timing shorter than intervening network idle expiry but not so aggressive that transient loss aborts healthy jobs.
Small nodes Use operating-system defaults unless a measured network failure mode requires an override; tune the complete idle/interval/count tuple, not tcp_keepalives_idle alone.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing tcp_keepalives_idle in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Tuning one keepalive component without calculating the full idle-plus-retransmit failure window.
  • Assuming PostgreSQL’s requested value overrides unsupported platforms or a shorter firewall and load-balancer idle policy.
  • Choosing a value longer than the network device’s idle timeout and never getting a useful probe first.

tcp_keepalives_interval · tcp_keepalives_count · tcp_user_timeout · client_connection_check_interval · authentication_timeout

References

40 - tcp_keepalives_interval

tcp_keepalives_interval is the PostgreSQL setting that defines the interval between TCP keepalive retransmits.
Note

Fact — official short description: “Time between TCP keepalive retransmits.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Values
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / TCP Settings
Upstream classification
Latest boot value , Value0
0 s

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 0 s 0 s

How it works

tcp_keepalives_interval defines the interval between TCP keepalive retransmits. 0 means use the system default. After probing begins, it spaces retransmissions and combines with tcp_keepalives_count to determine total failure-detection time.

tcp_keepalives_interval is a USER-context setting. An authorized role can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

The effective failure window is derived from tcp_keepalives_idle, tcp_keepalives_interval, and tcp_keepalives_count, subject to operating-system support and any shorter network-device timeout.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Choose tcp_keepalives_interval with the other keepalive controls so total failure-detection time fits load-balancer, failover, and retry budgets. Confirm the operating system implements the requested socket option.
OLAP Long analytical connections need keepalive timing shorter than intervening network idle expiry but not so aggressive that transient loss aborts healthy jobs.
Small nodes Use operating-system defaults unless a measured network failure mode requires an override; tune the complete idle/interval/count tuple, not tcp_keepalives_interval alone.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing tcp_keepalives_interval in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Tuning one keepalive component without calculating the full idle-plus-retransmit failure window.
  • Assuming PostgreSQL’s requested value overrides unsupported platforms or a shorter firewall and load-balancer idle policy.
  • Tuning the retransmit interval without considering tcp_keepalives_count and total failure-detection time.

tcp_keepalives_idle · tcp_keepalives_count · tcp_user_timeout · client_connection_check_interval · authentication_timeout

References

41 - tcp_user_timeout

tcp_user_timeout is the PostgreSQL setting that defines the TCP user timeout.
Note

Fact — official short description: “TCP user timeout.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valueuser
Settable by an ordinary user
Unit , Valuems
Raw unit
Range , Value02147483647
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / TCP Settings
Upstream classification
Latest boot value , Value0
0 ms

Lifecycle

Fact Value
First observed PG12
Present in PG12–19 Beta 3
Removed in No
Introduction commit 249d64999615 — Add support TCP user timeout in libpq and the backend server
Commit date 2019-04-06
Discussion thread 1

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG12–19 Beta 3 0 ms 0 ms

How it works

tcp_user_timeout sets the TCP user timeout. 0 means use the system default. Where supported, it bounds how long transmitted data may remain unacknowledged before TCP closes the connection; it is distinct from keepalive probing of an idle connection.

tcp_user_timeout is a USER-context setting. An authorized role can change it for a session, while ALTER ROLE or ALTER DATABASE can establish a default for future sessions.

Timeouts overlap: the first applicable deadline wins, while client, pooler, TCP, and server cancellation behavior determines whether work is retried, canceled, or the session is closed.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Set tcp_user_timeout from the maximum acceptable unacknowledged-data stall, below the service failover budget and with client retry behavior tested.
OLAP Allow for temporary congestion during large result transfer, but keep the value below the point where an unreachable peer wastes a worker for the rest of the job window.
Small nodes Use the operating-system default unless measured half-open connections require a bound; confirm platform support before relying on it.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG12–19 Beta 3 unmodified; OLAP: PG12–19 Beta 3 unmodified; CRIT: PG12–19 Beta 3 unmodified; TINY: PG12–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Changing tcp_user_timeout in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.
  • Forgetting that zero usually disables the timeout or delegates behavior to the operating system.
  • Setting overlapping deadlines without deciding which layer owns retries, cancellation, and connection disposal.
  • Confusing unacknowledged-data timeout with keepalive detection for an otherwise idle socket.

tcp_keepalives_idle · tcp_keepalives_interval · tcp_keepalives_count · client_connection_check_interval · authentication_timeout

References

42 - unix_socket_directories

unix_socket_directories is the PostgreSQL setting that defines the directories where Unix-domain sockets will be created.
Note

Fact — official short description: “Sets the directories where Unix-domain sockets will be created.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value/var/run/postgresql
/var/run/postgresql

Lifecycle

Fact Value
First observed PG9.3
Present in PG9.3–19 Beta 3
Removed in No
Introduction commit c9b0cbe98bd7 — Support having multiple Unix-domain sockets per postmaster.
Commit date 2012-08-10
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.3–19 Beta 3 /var/run/postgresql /var/run/postgresql

How it works

unix_socket_directories sets the directories where Unix-domain sockets will be created. PostgreSQL creates one socket and lock file per listed directory at startup; a value beginning with @ selects an abstract namespace on supported systems.

unix_socket_directories is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

Unix-socket reachability combines directory existence and traversal rights, socket group and mode, the server account, and client search paths; pg_hba.conf local records still authenticate users.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Configure unix_socket_directories as one Unix-socket access policy: choose trusted directories, ownership, group membership, and modes, then test local poolers, monitoring, backup, and administration.
OLAP Use the same reviewed local-access boundary for analytical tools; add a directory or group only when its client and operating-system lifecycle are managed.
Small nodes Keep unix_socket_directories simple and least-privileged. A local socket avoids TCP overhead only marginally and should not be made world-accessible for convenience.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP /var/run/postgresql, /tmp different '/var/run/postgresql, /tmp'
OLAP /var/run/postgresql, /tmp different '/var/run/postgresql, /tmp'
CRIT /var/run/postgresql, /tmp different '/var/run/postgresql, /tmp'
TINY /var/run/postgresql, /tmp different '/var/run/postgresql, /tmp'
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.3–19 Beta 3 = /var/run/postgresql, /tmp (local); OLAP: PG9.3–19 Beta 3 = /var/run/postgresql, /tmp (local); CRIT: PG9.3–19 Beta 3 = /var/run/postgresql, /tmp (local); TINY: PG9.3–19 Beta 3 = /var/run/postgresql, /tmp (local). Advice, pending human review — Editorial inference: Providing both the distribution runtime directory and /tmp improves compatibility for local tools while retaining the conventional managed socket path.

Common pitfalls

  • Expecting a reload or SET to activate unix_socket_directories, although it requires a controlled server restart.
  • Opening the socket mode broadly while overlooking directory traversal, group membership, and pg_hba.conf local authentication.
  • Adding a volatile or missing directory and preventing server startup or confusing local clients after restart.
  • Changing unix_socket_directories globally without a rollback plan and a client or operational compatibility test.

listen_addresses · port · max_connections · reserved_connections · superuser_reserved_connections

References

43 - unix_socket_directory

unix_socket_directory — Sets the directory where the Unix-domain socket will be created. Observed in PG9.0–9.2; its last measured boot default is empty string in PG9.2, with postmaster context. It was removed in PG9.3.
Note

Fact — official short description: “Sets the directory where the Unix-domain socket will be created.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–9.2
Removed in PG9.3
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–9.2 "" empty string

How it works

PostgreSQL describes unix_socket_directory as follows: “Sets the directory where the Unix-domain socket will be created.” The value is fixed when the server starts, so changing it requires a controlled restart. The atlas measures it in PG9.0–9.2; boot_val is the compiled or initialized baseline, not proof of a running cluster’s effective setting.

This singular path setting selected the server’s Unix-domain socket directory. PostgreSQL 9.3 replaced it with unix_socket_directories, a comma-separated list that can create sockets in multiple locations; group and permission controls remain separate.

Read it together with unix_socket_directories, unix_socket_group, unix_socket_permissions, listen_addresses. Check SHOW and pg_settings on the target server, verify the source and pending_restart fields, and compare workload, logs, and resource metrics before and after any change.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Do not add this retired name to a current OLTP configuration. Translate its intent to the documented successor, test the migration under connection and write concurrency, and remove stale automation that still emits it.
OLAP For an upgrade or analytical estate, inventory every generated configuration before cutover. Map the old control to its successor and compare plans, throughput, WAL, or logging behavior rather than assuming the old numeric value is portable.
Small nodes Delete the obsolete override after recording why it existed. On a small node, prefer the successor’s default until measurements justify a new value; an unknown startup parameter can otherwise stop the server.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG9.2; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–9.2 unmodified; OLAP: PG9.0–9.2 unmodified; CRIT: PG9.0–9.2 unmodified; TINY: PG9.0–9.2 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Treating the measured boot_val for unix_socket_directory as proof of the effective value on an initialized or managed cluster.
  • Applying a change as though it were immediate while pg_settings reports postmaster context.
  • Changing this setting in isolation without checking the linked limits, observability, and rollback path.
  • Copying the removed name into a modern postgresql.conf instead of migrating to its documented successor.

unix_socket_directories · unix_socket_group · unix_socket_permissions · listen_addresses

References

44 - unix_socket_group

unix_socket_group is the PostgreSQL setting that defines the owning group of the Unix-domain socket.
Note

Fact — official short description: “Sets the owning group of the Unix-domain socket.”

Identity

Type , Valuestring
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value""
empty string

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 "" empty string

How it works

unix_socket_group sets the owning group of filesystem Unix-domain sockets; the owning user remains the PostgreSQL server account. An empty string uses that account’s default group, and unix_socket_permissions determines which group access bits are usable.

It is a POSTMASTER-context setting, so changing it requires restart and affects sockets recreated at startup. Directory ownership and traversal rights, group membership, and pg_hba.conf local records remain separate access layers.

The setting is unsupported and ignored on Windows. It is also ignored for Linux abstract-namespace sockets selected by an @-prefixed unix_socket_directories entry, because those sockets have no filesystem owner or group.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Choose a dedicated operating-system group only for local tools that need socket reachability, audit its membership, and pair it with 0770-style socket and directory permissions. Test pg_hba.conf authentication separately.
OLAP Analytical tools should join the same reviewed local-access group or use TCP/TLS; do not create a broad group merely for convenience.
Small nodes Use the server account’s default group unless a managed local client requires another one. On Windows or abstract sockets, configure the actual applicable access boundary instead because this GUC is ignored.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Expecting a reload to change socket ownership; the socket is recreated only at server restart.
  • Relying on this setting on Windows or for an abstract-namespace socket, where it is ignored.
  • Granting membership in the socket group without separately enforcing pg_hba.conf authentication and database privileges.
  • Changing the socket group while directory traversal permissions still prevent intended clients from reaching it.

listen_addresses · port · max_connections · reserved_connections · superuser_reserved_connections · unix_socket_directories

References

45 - unix_socket_permissions

unix_socket_permissions is the PostgreSQL setting that defines the access permissions of the Unix-domain socket.
Note

Fact — official short description: “Sets the access permissions of the Unix-domain socket.”

Identity

Type , Valueinteger
Upstream pg_settings type
Context , Valuepostmaster
Requires a server restart
Unit , Value
Raw unit
Range , Value0511
Raw limits in the last observed version
Enum values , Value
— for non-enum types
Category , ValueConnections and Authentication / Connection Settings
Upstream classification
Latest boot value , Value511
511

Lifecycle

Fact Value
First observed PG9.0 (research boundary)
Present in PG9.0–19 Beta 3
Removed in No
Introduction commit Not asserted: predates the PG9.0 research boundary
Commit date
Discussion

Default history

Measured PG9.0–19 Beta 3 boot defaults
Versions Raw boot_val Unit Human value
PG9.0–19 Beta 3 511 511

How it works

unix_socket_permissions sets the chmod-style mode of filesystem Unix-domain sockets. Use a leading zero for octal notation. For a socket, only the write bit controls the ability to connect; read and execute bits do not provide meaningful additional socket access.

It is a POSTMASTER-context setting, so the mode changes only when sockets are recreated at server restart. Directory traversal permissions and unix_socket_group can form another local boundary, while pg_hba.conf local records still authenticate database users independently.

Abstract-namespace sockets have no filesystem permissions, so this setting is ignored for @-prefixed socket entries. Some operating systems also ignore socket modes entirely; the page must not present the mode as a portable replacement for directory permissions or pg_hba.conf.

Tuning advice

Tip

Advice. These are workload-specific starting points and must be validated with measurements.

Workload Guidance
OLTP Use 0770 or 0700 only when local operating-system membership is an intentional first boundary, and verify that directory permissions and pg_hba.conf still enforce the desired policy. The portable default 0777 can be acceptable when pg_hba.conf is authoritative.
OLAP Apply the same local policy to analytical tools. Do not weaken the mode to solve a missing group or directory deployment; repair the operating-system identity path instead.
Small nodes Choose the simplest mode supported by the platform and test it after restart. For abstract sockets or systems that ignore socket modes, enforce access through the directory choice where applicable and pg_hba.conf.

Pigsty

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

Template Effective value Versus upstream boot Source expression
OLTP Unmodified
OLAP Unmodified
CRIT Unmodified
TINY Unmodified
Caution

Advice — pending human review. Fact from the current Pigsty template projection: OLTP: PG9.0–19 Beta 3 unmodified; OLAP: PG9.0–19 Beta 3 unmodified; CRIT: PG9.0–19 Beta 3 unmodified; TINY: PG9.0–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

Common pitfalls

  • Writing decimal 770 instead of octal 0770 and creating an unintended numeric mode.
  • Expecting read or execute bits to control socket connection access; only the write bit matters.
  • Relying on the mode for abstract-namespace sockets or operating systems that ignore socket permissions.
  • Treating a restrictive socket mode as a substitute for pg_hba.conf authentication, role privileges, or directory traversal controls.

listen_addresses · port · max_connections · reserved_connections · superuser_reserved_connections · unix_socket_directories

References