为什么PHP脚本在新服务器上的执行时间长?

时间:2012-08-20 06:05:45

标签: php linux apache imagemagick

我的服务器有2个四核处理器(2.4 GHz,16 GB RAM)。我有一些在非常繁重的负载下运行的PHP脚本。这些脚本中的大多数都做了一些事情:

  1. 从数据库中获取数据(只需一行,来自小表)
  2. 从其他服务器(主要是Facebook)获取数据
  3. 上传小照片
  4. 更新数据库表(此表使用频繁,行数增长非常快,几乎每秒2行)
  5. 问题是,脚本执行时间太长。我之前有一台配置较低的服务器(一个四核处理器,6GB RAM),但脚本需要4-5秒才能完成。但现在,执行时间是30-40秒,甚至更多。

    我如何测量执行时间?我在脚本开始和脚本结束时测量microtime()并减去它们。我只需粗略估计。

    服务器配置:以下是apache config中设置的一些参数:

    server_limit = 350
    max_chlid = 350
    keep_alive = off
    

    其他特征: 1.当服务器负载不重时,执行时间非常短 2.以前的服务器执行时间非常短,即使在负载很重的情况下

    我不知道我应该包括哪些细节。请问我,我会在这里张贴。

    我该怎么做才能改善这个?

    更新:

    我已经发现问题在于ImageMagick库。我用谷歌搜索并尝试了一些像禁用OpenMP的方法。但它没有多大帮助

3 个答案:

答案 0 :(得分:3)

我建议使用xdebug进行性能分析,然后使用kcachegrind之类的软件对其进行分析。然后你会知道什么需要时间。

答案 1 :(得分:1)

这可能有很多原因:

  1. 您的查询“慢”吗?
  2. 服务器配置是否正确?
  3. 带宽是否缓慢?
  4. MySql-Server配置是否正确?
  5. 您插入的表的格式是什么?
  6. 还有其他东西(例如cronjob)杀了数据库吗?
  7. 我会将此作为评论发布,但遗憾的是我无法取消这些问题并告诉您发现的内容;)

答案 2 :(得分:0)

我会开始解决这个问题。分别测试每个动作(从db获取,从fb获取,上传等)。

同时检查新服务器env的所有组件是否与以前相同(包,版本,配置等)。