繁体   English   中英

服务器上的PHP脚本比WAMP本地主机上的PHP脚本慢得多

[英]PHP script much slower on server than on WAMP localhost

因此,如上所述,我有一个很大但很简单的脚本,该脚本从网站获取一个json文件,对其进行解码,然后将数据保存在PostgreSQL数据库中。 在我的计算机(i3M CPU,笔记本电脑)上完全完成(大约300 000条记录)大约需要4到5分钟,但是在我刚刚租用的服务器上完成同一操作大约需要10到15倍的时间。

专用服务器具有英特尔至强四核(3Ghz)CPU,并且总体上具有更好的规格和更好的Internet访问,因此,我敢肯定与它无关。 它运行最新的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。

性能问题可能是由很多原因引起的。

  • 首先,我非常确定(?)您的本地PC上有SSD磁盘,而服务器可能在“默认SAS驱动器”上运行。 当涉及到向硬盘写入/读取内容时,这可能会产生巨大的变化。 特别是对于“ Random-IO”(即,根据条件选择,并且要有一个“较小”的dbbuffer)
  • 您是否有“根”服务器或租用的VM? 如果是虚拟机,请记住,您也要与其他虚拟机共享资源。 (尤其是对SAS磁盘的访问,还包括CPU时间)

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

  • 生成一个使用尽可能多的CPU能力的PHP脚本,添加数百万次迭代,比较结果。 (猜想这不是问题)
  • 生成一个使用大量DISK-IO的PHP Scirpt,比较大量迭代的结果。
  • 生成一个使用大量内存的PHP脚本-再次比较。 (请谨慎操作-使用过多的内存将导致数据写入硬盘,从而“破坏”结果)

如果您现在没有遇到(意外的)差异,那么您已经消除了硬件问题。 -对繁重的数据库负载重复执行此任务,以弄清数据库是否配置错误。 有时,它只是一个简单的“布尔”标志,可能会严重影响性能。

为了进一步了解Dognose的答案,我发现优化数据库访问可以在性能上产生很大的不同。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM