PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara memutus koneksi TCP/IP dengan keepalive postgreSQL tanpa mengubah apa pun di register?

PostgreSQL di Windows tidak mendukung pengaturan keepalive untuk satu koneksi. Ini menggunakan setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, ...) yang khusus untuk IMHO Linux.

Anda dapat menerapkan tambalan untuk Postgres sehingga menggunakan SIO_KEEPALIVE_VALS . Sesuatu seperti ini di src/backend/libpq/pqcomm.c di StreamConnection fungsi.

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

Atau Anda dapat mengatur pengaturan seluruh sistem di registri Windows HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters menggunakan KeepAliveInterval dan KeepAliveTime pengaturan (hitungan selalu 10 pada Windows Vista dan yang lebih baru).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membandingkan Load Balancer untuk PostgreSQL

  2. Hitung frekuensi array atau objek jsonb

  3. Bagaimana cara mengubah kueri hierarki Oracle ke postgresql?

  4. Mengapa Sekuel migrasi membuat tabel tetapi model tidak dapat terhubung ke database

  5. Mengapa saya harus memiliki_banyak hubungan?