我们的网络服务器面临性能问题。我们正在使用带有 php 5.4.14(它是一个 uniserver 包)和一个 postgresql 数据库 9.2 的 apache 服务器(2.4.4)。它在 Windows 系统上(可以是 XP、7 或服务器……)。
问题是来自网络服务器的请求响应太慢;我们做了一些分析,发现数据库连接大约是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. E-5 秒(而持续时间为0.020 秒为假)。
20 毫秒是正常值吗(我们必须转向持久连接)?
我们也用mysql做了一个测试,非持久连接的连接时间在2ms左右。
我们在 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 上进行了测试