我在这台机器上:
英特尔酷睿 2 双核 e8400 @3GHZ 4GB 内存 DDR2
php 5.3.6 pgsql 9.1
我正在运行一个 php 脚本,在具有类似规格的 mac 上需要 5 分钟。这个 php 脚本本质上是重新创建一个数据库,将一些数据导入其中。
在这台计算机上运行超过 20 分钟。
奇怪的是使用 PHP 和 POSTGRESQL 的 CPU
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8408 postgres 20 0 2188m 44m 40m D 4 1.1 0:20.71 postgres
8407 gianps 20 0 380m 225m 6620 S 2 5.7 0:11.78 php
top - 16:08:32 up 3:35, 3 users, load average: 1.26, 1.15, 0.80
Tasks: 187 total, 1 running, 185 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.8%us, 2.7%sy, 0.2%ni, 87.0%id, 5.1%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 4056572k total, 2541972k used, 1514600k free, 117772k buffers
Swap: 3905532k total, 0k used, 3905532k free, 902048k cached
我将 php(cli 和 apache)设置为根据需要使用尽可能多的 ram(内存限制 -1)并调整 postgres 以使用:
shared_buffers = 2GB
有效缓存大小 = 3072MB
有什么建议让这个脚本使用更多的内存和更多的 cpu 并运行得更快吗?
谢谢
更新:经过一番调查,我发现设置同步提交(在这种情况下)使我的脚本快 10 倍。
set synchronous_commit to off;
因为将此选项设置为默认选项是不安全的,所以我只是在需要时将其关闭..以了解同步提交文档的作用