我如何知道服务器上的瓶颈?

我有一个LAMP服务器运行一个大型的数据库服务于大量的请求。 如果事情开始变慢,我该如何判断瓶颈是数据库,处理器,磁盘I / O还是带宽,还是其他? 我如何在现场服务器上这样做,也就是说,我不想把事情搞下来做基准testing。

检查每个可能性… tophtop的处理器/内存使用,看看哪些进程正在吃更多的资源,慢查询数据库,networking监控带宽等等。

利用率高的地方在哪里? htopiotop告诉你什么? 你换了吗?

你从terminal或SSH运行命令

不幸的是,在MySQL中,没有办法查询不包含variables的查询分组最消费的查询列表。

运行长时间运行的查询报告总是好的,但它可能并不是最耗时的查询报告(一个快速运行的查询,称为最多可以减less你的工作负载,如果你减less了一半的内存和CPU消耗)

在数据库上,您的性能问题可能是devise(devise不佳的模型),服务器性能(尝试将索引和数据文件放在不同的分区上),或者只是查询优化。

尝试确定你的网站的哪一部分特别慢,以及它被称为多less。 尝试穿越这两个信息来确定最终的瓶颈。

在MySQL上查找特定的性能不佳的查询是一件痛苦的事情。