gpt4 book ai didi

php - UBUNTU 11.04 + PHP + POSTGRESQL 增强性能

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:10 25 4
gpt4 key购买 nike

我在这台机器上:

英特尔酷睿 2 双核 e8400 @3GHZ4GB 内存 ddr2

PHP 5.3.6pgsql 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 以使用:

共享缓冲区 = 2GB
effective_cache_size = 3072MB

有什么建议可以让这个脚本使用更多内存和更多 CPU 并运行得更快吗?

谢谢

更新:经过一番调查后,我发现设置同步提交(在这种情况下)使我的脚本速度提高了 10 倍。

set synchronous_commit to off;

由于将此选项设置为默认选项并不安全,我只是在需要时将其关闭..了解同步提交的作用 documentation

最佳答案

导入数据需要将其写入磁盘,因此该过程的持续时间可能由本地存储系统的性能决定。如果你的 Mac 有一个华丽的 SSD 而另一个盒子是一个 IDE 磁盘,后者可能很容易慢很多。使用 iostat 可视化两个系统上的磁盘吞吐量。

插入/写入数据的另一个重要性能因素是提交大小,尝试一次插入大量行,然后每隔几千行发出一次提交。或者使用更快的“COPY FROM STDIN”方法(这是 Postgresql 专有的)。

关于php - UBUNTU 11.04 + PHP + POSTGRESQL 增强性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com