sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan afbrydes forbindelser TCP/IP ved keepalive postgreSQL uden at ændre noget i registret?

PostgreSQL på Windows understøtter ikke keepalive-indstillinger for én forbindelse. Den bruger setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, ...) som er IMHO Linux-specifik.

Du kan implementere en patch til Postgres, så den bruger SIO_KEEPALIVE_VALS . Noget som dette i src/backend/libpq/pqcomm.c i StreamConnection funktion.

{ DWORD bytesReturned = 0; tcp_keepalive vals; vals.keepalivetime = 60*1000; /* milliseconds */ vals.keepaliveinterval = 60*1000; /* milliseconds */ vals.onoff = 1; err = WSAIoctl( port->sock, SIO_KEEPALIVE_VALS, (char *)&vals, sizeof(vals), NULL, 0, &bytesReturned, NULL, NULL); if (err == -1) { elog(LOG, "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %m"); } }

Eller du kan indstille hele systemet i Windows-registreringsdatabasen HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters ved hjælp af KeepAliveInterval og KeepAliveTime indstillinger (antal er altid 10 på Windows Vista og nyere).




  1. Sådan henvises til JSON-nøgler, der indeholder specielle tegn, når du bruger OPENJSON, JSON_QUERY og JSON_VALUE (SQL-server)

  2. Sådan oprettes og manipuleres SQL-databaser med Python

  3. SQL-gruppe ved at:bruge where-klausul logik til at filtrere resultater baseret på aggregerede funktioner

  4. Kører Django-migreringer på dockeriseret projekt