我有一台 LAMP 服务器,上面有一个大型数据库,用于处理大量请求。如果服务器速度开始变慢,我该如何判断瓶颈是数据库、处理器、磁盘 I/O、带宽还是其他什么?我该如何在实时服务器上执行此操作,也就是说,我不想为了进行基准测试而关闭服务器。
答案1
检查每一种可能性......top
或者htop
检查处理器/RAM的使用情况,看看哪个进程消耗了更多的资源,数据库的查询速度很慢,网络监控带宽等等。
答案2
哪些地方利用率较高? 系统会告诉你什么htop
?iotop
你在交换吗?
从终端或 ssh 运行命令
答案3
不幸的是,在 MySQL 上,没有办法查询按不带变量的查询分组的最耗时的查询列表。
运行长时间运行的查询报告总是好的,但它可能不是最耗时的(一个快速运行的查询,称为最多的查询,如果你以某种方式将内存和 CPU 消耗减少一半,可以大大减少你的工作量)
在数据库上,您的性能问题可能是由设计(设计不良的模型)、服务器性能(尝试将索引和数据文件放在不同的分区上)或简单的查询优化引起的。
尝试确定您网站的哪个部分特别慢以及调用次数。尝试结合这 2 个信息来确定最终的瓶颈。
在 MySQL 上识别特定的性能不佳的查询很麻烦。