PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да прекъсна връзките TCP/IP чрез keepalive postgreSQL, без да променям нищо в регистъра?

PostgreSQL на Windows не поддържа настройки за поддържане на активността за една връзка. Той използва setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, ...) което е IMHO специфично за Linux.

Можете да внедрите корекция за Postgres, така че да използва SIO_KEEPALIVE_VALS . Нещо подобно в src/backend/libpq/pqcomm.c в StreamConnection функция.

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

Или можете да зададете настройки за цялата система в регистъра на Windows HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters използвайки KeepAliveInterval и KeepAliveTime настройки (броят винаги е 10 на Windows Vista и по-нови).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете няколко таблици в PostgreSQL с помощта на заместващ знак

  2. TypeError:не може да излезе от psycopg2.extensions.Binary to binary

  3. Sequelize и peer удостоверяване за Postgres?

  4. Клас на JPA модел за поле TIMESTAMP БЕЗ ЧАСОВА ЗОНА ПО ПОДРАЗБИРАНЕ CURRENT_TIMESTAMP в Postgres?

  5. Как да декодирате PostgreSQL bytea колона шестнадесетичен към int16/uint16 в r?