当您调试 Web 服务器以解决停机时的性能问题时,应遵循怎样的流程?

当您调试 Web 服务器以解决停机时的性能问题时,应遵循怎样的流程?

不幸的是,这是一个有点模糊的问题。但我时不时会遇到这个问题。

现在我的服务器是完全托管的 CentOS 5 - Plesk 9.2.1。

最近几天,服务器一直处于堵塞状态,apache(或)mysql 或两者都似乎明显变慢,页面没有返回或返回速度非常慢,重新启动 mysql 有帮助,有时重新启动 apache 有帮助,有时我需要重新启动整个服务器(SSH 开始工作得非常慢)。

所以我的问题是,在出现停机时,调试 Web 服务器性能问题的流程是怎样的?

我不认为服务器的流量太大(尽管它的流量很稳定),只是某物好像要杀死它……

我从哪说起呢!

帮助!

答案1

您是否尝试过在 MySQL 上进行某种形式的查询分析?如果您运行非常密集的查询(例如 SELECT * FROM tbl1 INNER JOIN tbl2 ... INNER JOIN tbl3... LEFT JOIN tbl 4... 作为一个非常基本但明显的例子),并且您返回了很多行,或者您的查询没有正确索引,这可能会大大降低您的系统速度 - 我从没有优化的缺乏经验的日子中吸取了教训 ;-)

mysqlreport 和 tuning-primer.sh 脚本等工具是实现此目的的良好起点。mysqlreport 位于http://hackmysql.com/mysqlreport,而且我只能发布 1 个链接,因此请改用 Google 搜索“tuning-primer.sh” :-)

答案2

Bernhard 的回答很好,但我建议你跳过 sysstat 直接进入穆宁. 通过负载的图形表示,可以更容易地确定您是否正在交换 [ 太多的 Apache 进程?]、破坏磁盘 [ 优化不佳的 SQL 查询、太大的临时表?]、耗尽 CPU 能力等。

为mysql打开慢查询日志

答案3

您应该首先安装 sysstat 软件包。它将每 10 分钟创建一次有关 CPU、内存和 I/O 负载的统计数据。当服务器再次开始变慢时,您可以查看“sar”实用程序(软件包的一部分)的输出,以确定哪个资源是实际的瓶颈。

相关内容