PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zrywać połączenia TCP/IP przez utrzymywanie postgreSQL bez zmiany czegokolwiek w rejestrze?

PostgreSQL w systemie Windows nie obsługuje ustawień utrzymywania aktywności dla jednego połączenia. Używa setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, ...) który jest specyficzny dla IMHO Linux.

Możesz zaimplementować poprawkę dla Postgresa, aby używała SIO_KEEPALIVE_VALS . Coś takiego w src/backend/libpq/pqcomm.c w StreamConnection funkcja.

{
    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");
    }
}

Lub możesz ustawić ustawienia systemowe w rejestrze Windows HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters przy użyciu KeepAliveInterval i KeepAliveTime ustawienia (liczba zawsze wynosi 10 w systemie Windows Vista i nowszych).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmiana nazwy wielu kolumn w PostgreSQL

  2. WYJAŚNIENIE PostgreSQL – Jakie są koszty zapytań?

  3. Konwertuj listę dykt w Pythonie na tablicę Postgresql json

  4. PostgreSQL nie używa częściowego indeksu

  5. Heroku pg:przywracanie kopii zapasowych nie powiodło się z powodu przekroczenia limitu czasu aplikacji Rails