找出导致服务器速度变慢的原因

找出导致服务器速度变慢的原因

我有一个潜在客户,他的 php 网站大部分时间运行良好。但是,大约每周一次,它就会出现延迟(页面加载缓慢)。我确信有很多原因可能导致这种情况(网络问题、安装错误、特定的 php 文件、流量负载增加)。但是,我需要一种方法来推断导致这种情况的原因。是否有专门用于处理这些情况的服务器监控软件?

PS:服务器是linux

答案1

我会发现以下情况:

  • 这种“减速”会影响所有用户吗?
  • 整个网站的速度会变慢吗,还是只是网站内的一组特定功能的速度变慢了?
  • 它是否每天同一时间发生,或每周同一天发生?

如果速度总是在周五下班时间变慢,并且该应用程序用于用户输入一周的时间卡数据,那么可能只是因为服务器需要更多的 CPU/内存和/或带宽来承担所有最后一刻用户的负载。可以说,如果不了解应用程序及其用户和用途的来龙去脉,这些类型的模式将很难追踪。

为了推荐工具,我们需要知道您的应用程序在什么操作系统上运行?Windows/IIS,还是 Linux/Apache?但是,根据我的经验,网站速度变慢是由以下几种原因之一造成的:

  • 数据库编程不佳
    • SELECT * FROM TableXYZ
    • 对未索引列的查询
  • 服务器问题
    • 内存不足
    • 带宽不足
      • 服务器-->用户
      • 服务器-->数据库

针对性能相关问题,最常检查的是

  • 数据库服务器
    • CPU 负载
    • 有效内存
    • 磁盘队列长度(你的磁盘 IO 是否已达到最大值?
  • 网络服务器
    • CPU 负载
    • 内存使用情况
    • 到最终用户的带宽
    • 数据库服务器的带宽

答案2

对于 MSSQL 环境中的我们来说,在繁忙的 DB 服务器上启用自动增长 DB 选项也会导致随机减速。在自动增长期间,由于文件正在扩展,磁盘 I/O 非常繁重,因此在此期间发生的任何实时事务都会明显变慢,尤其是当此服务器已经接近其 I/O 限制时。

为了解决这个问题,我们简单地将数据库自动增长量(以 MB 为单位)扩大到一个非常大的数字,以至于现在它每年只发生一次。速度仍然很慢,但现在不是每周都发生。

答案3

您有 shell 访问权限吗?

sysstat 安装了吗?

如果您有 shell 访问权限,请确保已安装并启用 sysstat。等待大约一个小时,让它收集数据,然后以 root 身份从命令行输入“sar”。如果您看到数据,那就太好了。现在离开它。同时阅读 sysstat 或 sar 教程。当您再次看到延迟时,连接,运行 sar,查看究竟是什么在何时减慢了速度。查看确切的时间以及哪些资源不足(CPU/内存/IO/网络)将让您更好地了解要查看的内容。

答案4

一个非常棒的系统监控小工具(可以在命令行上临时使用,也可以在后台运行并记录数据,以查看趋势)是统计信息。这是我发现的最好的命令行工具。

一个好处是它唯一的依赖关系是 Python,因此您可以在您访问受限的系统上直接运行它,并且大多数功能不需要 root 权限。

这是一个最受欢迎的别名,可让您每秒实时了解主要组件(以及影响最严重的进程)的使用情况:

> 哪个 dstat-long
dstat-long dstat -cdngm --top-cpu --top-mem

相关内容