我通常不是系统管理员,但我有一台负载很重的生产服务器(提供一些基本的 php 页面和一些包含一些 sql 查询的 php 重定向文件,但没有图像),它不断崩溃。具体来说,负载达到约 20 并且请求超时。Apache 访问日志或错误日志中没有任何内容表明存在异常活动,但磁盘 IO 图表显示了与我们的停机时间相关的大量读/写峰值。
我知道这是这些页面和每小时几十万次点击的组合,但我不知所措,不知道该使用哪些工具。我需要查看 A) 这些页面每秒/分钟/小时的点击次数和 B) 提供每个页面需要多长时间。有什么可用于分析负载下的实时服务器?哪个最好?
服务器是 apache2、php5、ubuntu hardy。任何建议都非常感谢。
编辑:
感谢您的想法。我可以编辑 PHP,但这些页面是设计师经常更改的,他们喜欢复制/粘贴/删除内容,我希望找到比胶带更好的方法,因为这是我们许多服务器上反复出现的问题。
真的没有软件包可以监控生产服务器上每个文件的服务器负载吗?我是否必须求助于调试工具和每个代码段的分析?如果我的服务器已经因点击而阻塞,那么添加 XDebug 难道不会彻底搞砸我的 S@^& 吗?
答案1
您可以尝试 Apache 模块慢速对数获取当前进程处理每个请求所用的时间周期的测量值。
答案2
最简单的第一件事就是尝试识别请求的最“流行”的 PHP 文件。
你可以检查 Apache 的 access.log 文件,或者使用类似阿帕奇实时(尽管它也依赖于日志文件)。
您可以使用以下方式检查 Apache 服务器状态mod_status- 它还会向您显示究竟是什么在使用 Apache 的 CPU 周期。有很多关于使用它来识别 CPU 密集型请求的信息。
在您有了“优化候选”列表之后,您确实可以对每个候选单独使用 XDebug。
作为一个更简单的选择,你可以安装 xcache 或 APC 或任何其他 PHP 缓存软件。它确实显著加快了 PHP 脚本的执行速度。
答案3
答案4
有一个简单的方法可以自动将脚本添加到所有 php 文件的前面和后面:http://www.electrictoolbox.com/php-automatically-append-prepend/
只需在附加的文件中启动一个计时器,然后停止它并在附加的文件中记录运行时间。
通过使用此技术,您不必担心其他开发人员/设计人员覆盖您的代码。