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 でテストしました