10

所有している VPS に PostgreSQL をセットアップしました。データベースにアクセスするソフトウェアは PokerTracker というプログラムです。

PokerTracker は、オンライン ポーカーをプレイしている間、すべてのハンドと統計を記録します。

これを複数の異なるコンピューターからアクセスできるようにしたかったので、VPS にインストールすることにしました。いくつかの問題の後、エラーなしで接続できました。

ただし、出来はひどいです。私は「リモートpostgresqlが遅い」などについてたくさんの調査を行ってきましたが、まだ答えを見つけていないので、誰かが助けてくれることを願っています.

注意事項:

実行しようとしているクエリは非常に小さいです。VPS でローカルに接続している間、クエリは即座に実行されます。

リモートで実行している場合、クエリの実行には約 1 分 30 秒かかります。

VPS は 100MBPS で実行されており、接続元のコンピューターは 8MB 回線上にあります。

2 つの間のネットワーク通信はほぼ瞬時に行われます。遅延なく問題なくリモート接続でき、MSSQL を実行する複数の Web サイトをホストしています。すべてのクエリは、リモートまたはローカルで接続されているかどうかに関係なく、即座に実行されるため、PostgreSQL に固有のようです。

私は彼らの最新バージョンのソフトウェアと最新の互換バージョンの PostgreSQL を彼らのソフトウェアで実行しています。

データベースは新しいデータベースで、ほとんどデータが含まれておらず、真空/分析などをすべて無駄に実行しましたが、改善は見られません。

MSSQL がほぼ瞬時にクエリを実行する方法がわかりませんが、PostgreSQL は非常に苦労しています。

問題なく VPS IP のポート 5432 に telnet できます。クエリが実行されると言うように、非常に長い時間がかかります。

私が気づいたのは、クエリが実行されているときにルーターで帯域幅がほとんど使用されていないことです-しかし、単純なクエリではそうなるとは思いませんが、これが問題かどうかはわかりません 現在、3 つの異なるネットワーク (異なるルーターを含む) でリモート接続を試みましたが、問題は残ります。

LAN経由で別のマシンを介してリモート接続するのは簡単です。

また、postgre conf ファイルを編集して、より多くのメモリ/バッファーなどを許可しましたが、これが問題だとは思いません。私が求めていることは非常に単純です。まったく集中的であってはなりません。

ありがとう、リッキー

編集: クライアントとサーバーの両方が Windows を実行していることに注意してください。

構成ファイルからの情報は次のとおりです。

pg_hba - 現在すべてのトラフィックを許可:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# IPv4 ローカル接続:
ホスト すべて すべて 0.0.0.0/0 md5
# IPv6 ローカル接続:
# 全ホスト ::1/128 md5

そしてpostgresqlconf - 私は、それが問題であるかどうかをテストするために、この設定に巨大な量のバッファ/メモリを与えたことを知っています - コメントされていない行のみを表示します:

listen_addresses = '*'
ポート = 5432
最大接続数 = 100
共有バッファ = 512MB
work_mem = 64MB
max_fsm_pages = 204800
shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll'
log_destination = 'stderr'
logging_collector = オン
log_line_prefix = '%t'
datestyle = 'iso, mdy'
lc_messages = 'English_United States.1252'
lc_monetary = 'English_United States.1252'
lc_numeric = 'English_United States.1252'
lc_time = 'English_United States.1252'
default_text_search_config = 'pg_catalog.english'

他に必要な情報があれば、お知らせください。ご助力いただきありがとうございます。

4

6 に答える 6

7

ログを有効にして、ログをソフトウェアの開発者に送信しました。彼らの答えは、もともとローカルまたはローカルに近いデータベースで実行することを意図したソフトウェアがあったため、VPS での実行はネットワーク遅延のために遅くなることが予想されるというものでした。

ご協力いただきありがとうございます。しかし、私にはアイデアがないように見えます。これは、特に VPS 上の PostgreSQL ではなく、ソフトウェアが原因です。

ありがとう、リッキー

于 2011-01-12T14:55:30.547 に答える
2

サーバーexplain analyzeでのクエリの実行時間を通知する を実行できます(結果をクライアントに送信するネットワークのオーバーヘッドはありません) 。

サーバーの実行時間が (表示されている時間と比較して) 非常に短い場合、これはネットワークの問題です。報告された時間があなたの側で観察したものと非常に似ている場合、それは PostgreSQL の問題です (実行計画と、場合によっては PostgreSQL の構成を投稿する必要があります)。

于 2011-01-11T17:56:01.197 に答える
1

しばらくの間、この問題に悩まされていましたが、この質問は私を答えに導いてくれました。

サーバーには、デフォルト ルートとしてセットアップされたセカンダリ ネットワーク インターフェイス (eth1) がありました。クエリを実行するクライアントは eth0 と同じサブネット内にあったため、これによって問題が発生することはありません..しかし、問題が発生しました。

デフォルト ルートを無効にすると、クエリは通常の時間枠内に返されます。しかし、長期的な修正は、listen_addressesから'*'を正しい IP に変更することでした。

于 2016-11-09T04:21:10.520 に答える
0

ネットワーク監視ツール(postgresqlを含む多くのプロトコルをトレースできるため、wiresharkをお勧めします)を使用して、ネットワーク接続に問題がないかどうかを確認します。接続が悪い場合は、ドロップ/再送信されたパケットが表示されます。

于 2011-01-11T12:51:40.923 に答える
0

おそらく、Postgres はidentを使用して認証しようとしていますが、これは機能していません (ファイアウォールで保護されているなど)。他の手段による接続を許可する前に、タイムアウトを待つ必要があります。

psql を使用するためにリモート サーバーにクエリを実行してみてくださいselect version()。これは、ディスクに触れないため、すぐに実行されるはずです。

pg_hba.confインスタントでない場合は、 (コメントなしの行)を投稿してください。

別の考えられる原因:

  • RevDNS を使用した認証。
  • サーバーまたはクライアントのウイルス対策。
  • 明確に終了していないため、他の接続がテーブルまたは行をブロックしています。
于 2011-01-11T17:42:14.203 に答える
0

これは、VPN 経由での pg アクセスが遅い理由に対する答えではありませんが、ブラウザ経由で PG にアクセスするように TeamPostgreSQL を設定することで解決できる可能性があります。これは、データをナビゲートしたり、データベースを管理したりするための非常に便利な機能を備えた AJAX Web アプリケーションです。

これにより、私の経験では、VPN 経由で pg を操作するときによくある接続の切断も回避できます。

Web アクセス用の phpPgAdmin もありますが、データベース内のデータをナビゲートして概要を把握するのに非常に役立つため、TeamPostgreSQL について言及します。

于 2011-01-13T09:46:13.970 に答える