1

Web サーバーでパフォーマンスの問題に直面しています。php 5.4.14(uniserverパッケージ)とpostgresqlデータベース9.2でApacheサーバー(2.4.4)を使用しています。それは Windows システム上にあります (XP、7、サーバーなど)。

問題は、Web サーバーからのリクエストの応答が遅すぎることです。いくつかのプロファイリングを行ったところ、データベース接続は約20 ミリ秒(ミリ秒) であることがわかりました。次のように PDO を使用しています。

$this->mConnexion = new \PDO(“postgres: host=127.0.0.1;dbname=”, $pUsername,$pPassword,  array(\PDO::ATTR_PERSISTENT => false));

次のようなプロファイリングを行いました。

echo "Connecting to db <br>";$time_start = microtime();

  $this->mConnexion = new \PDO(… 

$time_end = microtime();$time = $time_end - $time_start;

echo "Connecting to db done in $time sec<br>";

ATTR_PERSISTENT を true にしてテストを行ったところ、接続時間が大幅に短縮されました。コードは接続時間 = 2を報告します

20 ミリ秒は通常の値ですか (永続的な接続に移行する必要があります) ?

また、mysql でテストを行いました。非永続接続の接続時間は約 2 ミリ秒です。

これらのオプションは、postgresql 構成ファイルに設定されています。

listen_addresses = '*'      
port = 5432   
max_connections = 100        
SSL = off   
shared_buffers = 32MB

編集

スクリプトが失敗した場合、接続が悪い状態になるといういくつかの欠点があるため、永続的な (まだ) は使用しません (したがって、これらのケースを管理する必要があり、それを行う必要があります…)。永続的な接続に直接切り替える前に、このデータベース接続時間に関するより多くの視点が必要です。

Daniel Vérité の質問に答えるために、SSL はオフになっています (この件に関する以前の検索で、このオプションは既にチェック済みです)。

@Daniel : Intel Core 2 Extreme CPU X9100 @ 3.06Ghz 4Gb RAM でテストしました

4

1 に答える 1

1

ホストを空のままにして、UNIX ドメイン ソケットを使用してみてください。それは少し速いです。

于 2013-11-15T14:16:11.627 に答える