2

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

  1. 从数据库中获取数据(只有一行,从一个小表中)
  2. 从其他服务器(主要是 Facebook)获取数据
  3. 上传一张小照片
  4. 更新数据库表(这个表使用量很大,行数增长很快,几乎每秒2行)

问题是,脚本执行时间过长。我以前有一台配置较低的服务器(一个四核处理器,6GB RAM),但脚本需要 4-5 秒才能完成。但是现在,执行时间是 30-40 秒,甚至更多。

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

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

server_limit = 350
max_chlid = 350
keep_alive = off

其他特点: 1. 当服务器不处于重负载时,执行时间非常短 2. 以前的服务器执行时间非常短,即使在重负载下也是如此

我不知道我应该包括哪些其他细节。请问我,我会在这里发布。

我应该怎么做才能改善这一点?

更新:

我发现问题出在 ImageMagick 库上。我用谷歌搜索并尝试了一些解决方案,例如禁用 OpenMP。但这并没有太大帮助

4

3 回答 3

3

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

于 2012-08-20T06:14:56.620 回答
1

这可能有很多原因:

  1. 您的查询“慢”吗?
  2. 服务器配置是否正确?
  3. 它的带宽很慢吗?
  4. MySql-Server 配置是否正确?
  5. 您插入的表格的格式是什么?
  6. 其他东西(例如cronjob)会杀死数据库吗?

我会将其发布为评论,但不幸的是,我无法澄清这些问题并告诉您发现了什么;)

于 2012-08-20T06:14:20.727 回答
0

我将开始解耦问题。分别测试每个操作(从 db 获取、从 fb 获取、上传等)。

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

于 2012-08-21T05:39:18.130 回答