我必须管理一个不是我开发的网站。它使用 PHP 编写,使用位于 Web 服务器中的 mysql 数据库。该网站有时(当访问者增加太多时)会停止响应或响应太慢。
我用 PHP 开发过一些网站,但从未管理过,所以真的不知道从哪里开始。服务器(硬盘)似乎没问题,当网络停止响应时,CPU 使用率约为 55%,并且有大量内存。
我不是在要求别人解决这个问题。我只是希望有人能给我一些提示,告诉我在哪里可以找到日志,以及如何阅读和解释它们。这样,我就能知道它是网络流量、数据库(查询)还是其他什么。
谢谢!
更新:忘了说:它是Windows Server 2003。
笔记:我使用 Jet Profiler 记录了大约一天的时间。我不太明白它提供的所有信息,但有一个查询被标记为非常慢。这是有道理的,因为它是一个带有 where 子句的选择,该子句有三个类似条件。最初我没有将它包括在我的问题中,因为当我从 MySQL 查询浏览器运行查询时,它不会花费很长时间。它不到 0.01 秒。
答案1
通常是数据库导致网站速度变慢。很可能您有一些写得不好/没有索引的查询,而这些查询正是导致网站速度变慢的原因。在 MySQL 中,您可以通过打开慢查询日志。
通常这涉及以下步骤:1. 在 MySQL 日志文件夹中创建一个名为 slowqueries.log 的文件,通常是/var/log/mysql/
。使用 将其权限更改为用户 mysql chmod
(假设您使用的是 Linux)。2. 以 root 身份登录到 my sql 并发出以下查询:
set GLOBAL slow_query_log_file='/var/log/mysql/slowqueries.log'; -- sets the log file
SET GLOBAL slow_query_log=1; -- turns on slow query logging
一旦确定了执行时间过长的查询,就可以使用解释或者解释扩展进一步分析它们并了解如何优化它们,通常是通过添加索引/改进连接。
答案2
我使用 PHP 编写的网站也遇到了类似的问题,该网站运行在一台单独的服务器上,该服务器运行 mysql。我能够使用 Jmeter 和一个方便的插件,该插件将为您提供基于图表的服务器健康状况细分:code.google.com/p/jmeter-plugins/wiki/PerfMon#Installation
这确实可以帮助您诊断问题,因为您将能够模拟不同数量的用户。顺便说一句,我能够使用 PHP 的 APC 插件来优化代码。只是一个想法 :-)
答案3
检查 MySQL 查询,如果您有权访问服务器中的面板,请查看发生了什么。未优化的 sql 查询可能会导致您的服务器崩溃(我遇到过这种情况)。您应该从那里开始,一定有某些东西没有得到充分优化并导致其速度变慢,或者您的服务器运行不正常。