sql >> データベース >  >> RDS >> PostgreSQL

レジスタ内の何も変更せずにキープアライブpostgreSQLによって接続TCP/IPを切断するにはどうすればよいですか?

    Windows上のPostgreSQLは、1つの接続のキープアライブ設定をサポートしていません。 setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, ...)を使用しています これはIMHOLinux固有です。

    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 設定(Windows Vista以降ではカウントは常に10です)。




    1. Oracle の ODP.Net は改行 .Net 改行を処理できませんか?

    2. IsNotNullとNotIsNullの違いは何ですか

    3. MySQL IN句はサブクエリを複数回実行しますか?

    4. Django内の生のOracleSQLクエリでテーブルエイリアシングが機能しない