基于单个主机的瓶颈确定流程

 

基于单个主机的瓶颈确定流程

在生产环境中,一般来说,当单台服务器不能满足业务的需要时、性能出现瓶颈时,我们就需要做负载均衡。

那么我们如何确定单台服务器是否存在瓶颈呢?

在我读了《24小时365天不间断服务》这本书后,得到了启发。以下是确定服务器瓶颈的一个简单流程:

 

在服务器出现瓶颈时,我们要重点注意观察这两点:

  • 观察load average(平均负载)
  • 观察CPU/IO是否存在瓶颈

 

1.观察load average

  使用sar、uptime、top,可以判断整个系统的负载情况,也就是查看load average指标。虽然说不能通过这几个命令判断问题出现在哪里,但是我们我们可以load average着手,进行进一步的观察和判断。

  倘若load average指标不高,服务器的吞吐量还是达不到要求,我们就需要去看一下软件或者应的配置了,看看配置上是否做了限制导致吞吐量达不到要求。例如max connections等等,当然,具体情况需要具体分析。

  如果load average指标偏高我们就需要观察判断CPU和IO到底哪个出现瓶颈了?

 

2.观察CPU、IO是否存在瓶颈

  通过sar或者vmstat等工具确认CPU和IO哪个存在问题。

  sar(System Activity Reporter)是最全面的系统分析性能工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况磁盘IO、CPU使用效率、内存使用状况、进程活动及IPC有关的活动等。

  vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。

  这两个命令结合使用我们就能看出到底是CPU还是IO出现了瓶颈。(这两个命令具体如何使用这里我就不多加赘述了,大家可以google或者看官方文档,讲的很清楚。)

 

如果CPU负载较高:

  判断方法:

  书上说通过top和sar来判断问题是用户程序or系统程序,当然这个能得出结果。但这里我推荐一个命令glances,这也是一个系统性能监测命令,监测的指标非常全面,并且展示界面十分漂亮清楚,对出现异常的指标会以指定的颜色标记显示。如果服务器上没有这个命令的话,可以通过yum -y install glances进行安装。

  解决方案:

    (1)磁盘I/O和内存尚未超标的情况下,CPU load依旧偏高:增设服务器

  (2)程序逻辑问题造成CPU使用超限制:改善程序逻辑

如果IO负载较高:

  IO负载通常有两个原因:

  (1)程序本身对磁盘读写频繁

    (2) 使用了linux交换分区(swap)造成对磁盘的频繁访问

  

  判断方法:使用sar和vmstat判断是哪种原因。

  如果频繁访问swap分区:

    ps 、glances看哪个程序占的内存过高。

    内存不够、考虑提升内存。

    由于程序不受控制而造成内存占用过大时,可以修改相应的程序逻辑解决问题

 

  如果没有频繁访问swap分区 IO负载依旧较高:

    iotop查看是哪个程序进行频繁的读写,找出问题程序后,通过ps和查看日志查看程序运行状态。

    如果是正常读写,则可以考虑修改程序配置扩展内容缓存来减少对磁盘的读写或者升级硬盘为ssd硬盘,提高磁盘的读写能力。无法通过扩展内存和升级ssd的考虑  对数据的分流或者增肌缓存服务器。

    如果程序出错,导致非正常读写,考虑修改程序逻辑。

   

 

转载于:https://www.cnblogs.com/gtdong1120/p/9946815.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值