Home > C# > PostgreSQL > Npgsql > ドキュメント

キープアライブ Npgsql

新規作成日 2019-03-05
最終更新日

Keepalive

一部のクライアントは、長時間、アイドル状態の接続を維持します。-これは、PostgreSQLの通知を待つとき、特に頻繁です。この予想される展開では、クライアントは、接続が、まだ、確立されている、そして、サーバーやネットワークの停止で壊れたことをどのように知ることができますか?この目的のために、Npgsqlは、キープアライブ機能を持っています。これにより、定期的な、SELECT NULLクエリが送信されます。この機能は、デフォルトで無効になっています。そして、Keepalive接続文字列パラメータで有効にする必要があります。それぞれのキープアライブ間の秒数を設定します。

キープアライブを有効にするとき、キープアライブが失敗すると、NpgsqlはNpgsqlConnection.StateChangeイベントを発行します。

あなたが必要な場合にのみ、この機能を有効にしてください。あなたが、長く続くアイドル状態の接続があることを知らない限り、そして、あなたのバックエンド(あるいは、ネットワーク装置)は、これらの接続のじゃまをします。これをオフのままにしておくことをお勧めします。

TCPのキープアライブ

TCP Keepalives

上記のキープアライブ・メカニズムは、長く続くアイドル接続に最適です。しかし、それは、問合せ処理の間、使用することができません。Amazon RedshiftGreenplumのような、一部のPostgreSQLのようなデータ・ウェアハウス製品では、一つSQL文の実行に、長い時間がかかることは珍しくありません。そして、その間、SELECT NULLを送信することはできません。これらの場合、TCPのキープアライブをオンにするといいかもしれません。これは、上記のアプリケーション・レベルのキープアライブとは、かなり異なります。異なる種類のキープアライブを適切に理解するために、このブログの記事を参照してください。その記事が説明しているように、TCPのキープアライブは、ネットワーク・スタックのサポートに依存しており、常に機能するとは限りません。しかし、これは、クエリ処理中の唯一のオプションです。

Linux上では、接続文字列で、Tcp Keepalive=trueを指定するだけで、あなたは、キープアライブを有効にできます。既定のシステムでは、(interval、countなど)幅広い設定が使用され、現在、アプリケーション・レベルで、これらを指定することは不可能です。Windowsでは、また、あなたは、これらの設定を微調整するTcp Keepalive TimeとTcp Keepalive Intervalを指定することができます。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」