找出导致服务器减速的原因

我有一个潜在的客户,有一个大多数时间performance良好的PHP网站。 但是,每个星期左右,它都会经历滞后(缓慢的页面加载)。 我相信有无数的事情可能导致这个(networking问题,糟糕的安装,一个特定的PHP文件,增加的stream量负载)。 但是,我需要一种方法来推断是什么导致了这一点。 是否有任何服务器监控软件是专门处理这些情况?

PS:服务器是Linux

我会发现以下几点:

  • 这是否会减慢所有用户?
  • 这是整个网站缓慢下降,或只是在网站内的一组特定的function?
  • 它是否每天都在同一时间和同一天发生?

如果放弃时间总是在星期五,并且应用程序用于用户input本周的时间卡数据,则可能仅仅是服务器需要更多的CPU /内存和/或带宽来承担所有最后一次使用的时间,分钟的用户。 可以这样说,如果不知道应用程序及其用户和用途的来龙去脉,那么这些types的模式将很难被追踪。

为了推荐工具,我们需要知道你的应用在哪个操作系统上运行? Windows / IIS,Linux / Apache? 然而,在我的轶事经验中,网站放缓是由几件事情之一引起的:

  • 糟糕的数据库编程
    • SELECT * FROM TableXYZ
    • 查询未索引的列
  • 服务器问题
    • 内存不足
    • 没有足够的带宽
      • 服务器 – >用户
      • 服务器 – >数据库

最常见的事情检查(性能相关的问题)是

  • 数据库服务器
    • CPU负载
    • 有效内存
    • 磁盘队列长度(是你的磁盘IO最大了吗?
  • networking服务器
    • CPU负载
    • 内存使用情况
    • 带宽给最终用户
    • 带宽到数据库服务器

你有壳牌吗?

是安装了sysstat?

如果您有shell访问权限,请确保已安装并启用了sysstat。 等一个小时左右收集数据,然后从命令行input“sar”作为根目录。 如果你看到数据,太棒了。 现在离开它。 同时通读sysstat或sar教程。 当你看到滞后再次,连接,运行萨尔,看看究竟是什么时候放缓下来。 看到什么时候,什么是饿死(CPU /内存/ IO /networking)会给你一个更好的想法看什么。

你如何衡量减速? 你使用外部networking监控工具,如keynote或alertfox? 这对于与内部日志进行比较将是有用的。

dstat是一个用于系统监视的非常棒的小工具(在命令行上特别设置,如果设置为在后台运行并logging数据,则用于趋势)。 这是我为命令行find的最好的工具。

一个好处就是它唯一的依赖关系在Python上,所以你可以在你有限访问的系统上运行它,而且大多数function不需要root权限。

这里有一个最喜欢的别名,可以让你实时使用主要组件(以及最重的命中进程):

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

对于我们在MSSQL环境中,在繁忙的数据库服务器上启用的自动增长数据库选项也会导致随机减速。 在自动增长期间,当文件被扩展时,磁盘I / O非常繁重,因此在此期间发生的任何实时事务将明显变慢,特别是如果此服务器已经在I / O限制附近运行。

为了解决这个问题,我们简单地将数据库自动增长的数量(以MB为单位)扩大到了一个可笑的大数目,以至于每年只发生一次。 还是减速,但现在不是每周都会发生。