PHP脚本在服务器上比在WAMP localhost上慢得多

时间:2016-07-09 22:02:17

标签: php apache postgresql debian wamp

正如我上面所述:我有一个非常大但非常简单的脚本,它从网站获取一个json文件,对其进行解码,然后将数据保存在PostgreSQL数据库中。我的电脑(i3M CPU,笔记本电脑)需要大约4到5分钟才能完成(大约300 000条记录),但在我刚刚租用的服务器上做同样的事情要花费大约10-15倍的时间。

专用服务器有一个intel Xeon quad(3Ghz)CPU,整体水平更好的规格和更好的互联网访问,所以我很确定它与此无关。它运行最新的Debian,Apache / 2.4.10,PHP版本5.6.22-0,PostgreSQL 9.5 我试图从WAMP设置中复制设置和模块,这是我的帮助。不幸的是,它没有。不确定哪些信息可能有助于解决此问题,但我非常乐意回答任何问题。
我几乎肯定它与我必须跳过的某些选项有关,所以任何帮助都会非常感激。

PS:WAMP使用:2.4.17 Apache,5.6.16 PHP,9.5 PostgreSQL。

2 个答案:

答案 0 :(得分:1)

性能问题可能是由很多事情引起的。

  • 首先,我非常确定(?)您的本地PC有SSD磁盘,而服务器可能运行“默认的SAS-Drives”。当它归结为向硬盘写入/读取内容时,这可以产生巨大的差异。特别是对于“Random-IO”(即有很多选择条件和一个“小”dbbuffer)
  • 您是否拥有“root”服务器或租用的VM?如果是VM,请记住,您也可以与其他虚拟机共享资源。 (尤其是SAS-Disks上的访问,还有CPU-Time)

你应该编写一些脚本来“识别”瓶颈:

  • 生成一个PHP脚本,该脚本使用尽可能多的CPU-Power,添加几百万次迭代,比较结果。 (猜猜这不是问题)
  • 生成一个使用大量DISK-IO的PHP Scirpt - 比较迭代的结果。
  • 生成一个使用大量内存的PHP脚本 - 再次进行比较。 (注意这一点 - 使用太多内存会导致数据被写入硬盘,从而“破坏”结果)

如果您现在没有遇到(意外)差异,那么您已经消除了硬件问题。 - 为繁重的数据库加载重复该任务,以确定数据库是否可能未配置。有时它只是一个简单的“布尔”标志,可能会产生严重的性能影响。

答案 1 :(得分:1)

为了扩展dognose的答案,我发现优化数据库访问可以对性能产生重大影响。

如果您注释掉数据库查询,看看运行时会发生什么可能会很有趣。这将告诉您在DB上花费了多少运行时间。

如果数据库占用大量时间,请尝试批量处理您的请求。不要一次向DB发送一个插入,而是尝试将它们保存在变量中并批量发送50到100个插入(或更多)。根据您设置数据库连接的方式,每个请求可能会产生大量开销。