走过第一个双十一的收获----性能监控篇

一、网卡流量监控

1、网卡流量监控的意义是: 如果网卡流量上限设置过小,就会成为一个web系统的性能瓶颈。记得勤泽说过的,曾经一个系统设置网卡流量上限为15M,出现了大流量的时候系统雪崩的情况。但是这个只是特例情况,正常情况下,这个指标是不会成为、也不应该成为一个系统的性能瓶颈的。

2、我们系统中目前的ifout出流量平均值为26319.93KByte/s,ifin进流量的平均值为50760.54KBytes/s.。都是在可接受的范围内

3、如果当天的aliMonitor出现问题,在linux下可以有很多的语句监控网卡流量

第一种:watch more /proc/net/dev

第二种:watch ifconfig

第三种:ifstat

这两种都可以看到Receive【接收】和Transmit【发送】的流量。但是这两个可能会不太好,貌似都是监控到总的流量大小,我们需要关注的是网卡流量的瞬时的kBit/s的大小

,linux下的一个工具  iptraf【需要自己安装的】,可以更好监控,但是现在还没有测试使用过,对于我来说是存在于传说中的工具。。。。

二、cpu使用率

1、服务器cpu的使用率应该是维护在10%的使用率才能保证使用的安全性。

2、如果当天的aliMonitor出现问题,如何在linux中监控到cpu的使用率:

a、使用top命令:

cpu(s)那一行显示的含义分别是:用户的模式(user)、低优先级的用户模式(nice)、系统内核模式(system)以及系统空闲的处理器时间(idle)

3、如果观察到对应某台机器出现高cpu使用率,首先做的是立即停掉该机器对外提供的服务【比如阿里的hsf服务】。否则会导致一些服务的相应超时,导致一些用户的不可访问的情况。接下来可以首先查看是否是某个进程出现异常【比如黑客攻击,植入超高负载的死锁进程等】,确定进程的使用场景,如果可以的话可以杀死该进程。

对应的linux语句是:

a、查看进程的使用情况:  ps  aux |grep “XXXX”

b、杀死不需要的进程: kill s -9 <pid>

三、RT

1、RT:response Time【响应时间】

2、 一次有索引的DB操作RT应该小于2ms,一个读操作的服务接口RT应该不大于20ms,写操作的RT在50ms内可以都勉强接受。

3、如果一个操作RT较高,首先应该看到的是

a、热点接口对应的数据库操作,在数据库表是否有对应的索引【之前了解到一个数据库表索引的个数最好不雅超过5个,慎加索引】

b、sql中的group by等操作是否有进行相应的优化,即sql优化

c、调用的外部远程接口是否可以加缓存。【外部远程接口加缓存是很提高性能的一个事情,然而加缓存需要考虑缓存的失效期,毕竟需要保证数据的实时性,有缓存是一大阻碍】

d、如果有批量操作,大数量可能会超过500+的,可以设置一下每次batch200条,然后重复batch直至任务全部完成。实验证明,每次batch200条会有一个比较优秀的RT值

e、代码逻辑有问题、日志打印太多的废话等,个人理解,在代码逻辑的层次优化上其实很难可以大幅度降低接口RT,然而,毕竟都是需要关注的点啊。

四、TPS/QPS

1、TPS: transction per second 每秒事物数

QPS:query per second 每秒查询数

2、在一个大的web系统中,对于数据库的操作读操作远远大于写操作。读写分离可以降低数据库系统的压力。那么在我的理解中,TPS就是一个在写操作中的一次完整的操作,而qps就是在读操作中的一次完整的查询操作。正常来讲一次有索引的DB操作是不应该大于2ms的,而一个service层的服务接口的调用RT时间应该是小于20ms,那么,按照qps为20ms来计算,1s有1000ms,所以一个一个RT为20ms的读操作服务接口的QPS需要达到50 QPS。当然了,一个读接口要达到了50QPS的时候,并发量可能会是大于10以上,因为并发的影响,那么RT相应的也会变得大一些,

如果tps单机不能达到需求,就可以考虑加机器啦。毕竟我们现在也是有服务器集群的嘛。

五、tcp重传率

1、为什么会出现tcp重传的问题:

TCP是一种可靠的协议,在网络交互的过程中,由于TCP报文是封装在IP协议中的,IP协议的无连接特性导致其可能在交互的过程中丢失,在这种情况下,TCP协议需要去保障其传输的可靠性。TCP通过在发送数据报文的时候设置一个超时值,如果在定时器溢出的时候还没有收到来自接收端的返回报文的确认,它就会重传该数据报文

2、常见的高请求web系统之中,tcp重传率不应该高于0.5%,这样就是说在200次请求中,就会有一次请求会失败。需要重试。

3、会导致TCP重传的常见状况:

a、数据报传输途中丢失

b、接收端的ACK确认报文在传输中途丢失

c、接收端异常未响应ACK或者是被接收端丢弃

4、报文重传的次数:TCP报文重传的次数会根据不同的系统设置不同而区分。大部分的系统中,一个报文只会被重传三次。如果还是没有获取到该报文的确认,那么就不再尝试重传,直接reset重置该TCP连接。 但是在一些要求较高的业务应用系统中,则会不断的重传被丢弃的报文,已尽最大的可能保证业务数据的正常交互。

5、重传对于业务应用的影响:

a、重传可以保障业务的可靠性

b、重传反应网络通讯的状况:

如果在我们的系统中出现高于0.5%的TCP重传率,会影响我们的系统业务交互效率,导致业务系统出现缓慢甚至无响应的情况发生。

一般而言在出现大量tcp重传的时候,说明网络的通讯状况比较糟糕,需要站在网络层的角度去分析丢包和重传的原因

六、disk

1、磁盘的使用情况:需要对于各个磁盘空间的使用情况都进行关注。

以下是aliMonitor中配置的各个磁盘空间的

df_home /home分区磁盘空间使用率,范围(0,100] % avg,max,min
 
df_var /var分区磁盘空间使用率,范围(0,100] % avg,max
 
df_ /分区磁盘空间使用率,范围(0,100] % avg,max,min
 
df_boot /boot分区磁盘空间使用率,范围(0,100]
 
avg
 
df_home_admin home/admin分区磁盘空间使用率,范围(0,100]
 
avg
 
df_tmp /tmp分区磁盘空间使用率,范围(0,100]

2、目前的某些系统的disk的平均使用率大概在14%左右。

3、linux下的操作:

查看磁盘的使用率:  df   -lh

 

七、memory

1、内存的使用情况也是在系统运行的时候需要关注的,内存的使用率在80%以下的时候都是可以接受的。

2、目前我们的系统的内存使用率一直在平衡在35%左右。

3、如果出现AliMonitor不可用的时候,在linux下可以使用语句:

free -m来查看内存的使用情况

八、cpu load


1、cpu load的含义:cpu负荷,简单理解就是cpu当前处理的线程与总共能同时处理线程的比值

2、cpu load值应该是和cpu核数有关的,如果出现load高于3/4的情况下,就应该开始报警关注

3、在linux下查看本机核数的命令:

cat /proc/cpuinfo

或者是:

grep "cpu cores" /proc/cpuinfo|uniq

命令:  其中的cpu cores:行代表的就是cpu的核数

时间: 2024-10-10 06:50:45

走过第一个双十一的收获----性能监控篇的相关文章

Linux上性能异常定位以及性能监控

引言:大多数的服务都是跑在Linux上的,Linux现在也已经到了一个很广泛的应用,但是仍然会有很多问题出现,我们就来讨论下我们性能监控的指标,性能监控无非就是从I/O,内存,CPU,TCP连接数,网络,进程或者线程来出发,使用到的命令有iostat,vmstat,sar,mpstat,netstat,ss,iftop,free,pstree/ps,pidstat,top,(uptime)下面来进一步深入下吧. 一,磁盘I/O(iostat) 我们的机器上有很多的数据是存储在磁盘上的,我们读取的

struct结构体自动化构想性能监控

TABLE_NAME不查询其他数据库中的表.外为了以防万一,可以在SQL语句中写表时加上数据库比如SELECT column_name ,TABLE_NAME,TABLE通过查询information_schema库中的tables DeviceType | tinyint(3) unsigned | YES | | NULL | | | VideoInputNum | tinyint(3) unsigned | YES | | NULL | | | VideoCodecCapacity如果结构

linux性能监控以及网络命令

最近需要整理关于设备性能监控的命令(linux) 1.uptime eg: 22:59:10 up 50 days, 23:05,  3 users,  load average: 0.29, 0.43, 0.94 分别显示一分钟,五分钟,十五分钟负载 表示单位时间cpu等待队列中平均有多少进程在等待 2.free [-b | -k| -m]  指定输出单位 eg: total       used       free     shared    buffers     cached Mem:

MySQL 性能监控4大指标——第二部分

[编者按]本文作者为 John Matson,主要介绍mysql 性能监控应该关注的4大指标.第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池.文章系国内ITOM 管理平台OneAPM 编译呈现. 连接 名称 描述 指标类型 可用性 Threads_connected 当前开放的连接 资源: 利用率 服务器状态变量 Threads_running 当前运行的连接 资源: 利用率 服务器状态变量 Connection_errors_intern

我对AlwaysON性能监控的三板斧

延迟是AlwaysOn最大的敌人之一 延迟是AlwaysON的最大敌人之一.对AlwaysON而言,其首要目标就尽量减少(无法避免)主副本.辅助副本的数据延迟,实现主副本.辅助副本的“数据同步”.只有主副本.辅助副本的同步延迟越小越高,只读访问的实性性才会越高,数据库的RTO(Estimating Failover Time)和RPO(Estimating Potential Data Loss)也才会越小. 但延迟可能存在于AlwaysON同步的各个环节中,因此,在分析现延迟情况时,应该首先理

Informix 11.5 SQL 语句性能监控方法及实现

我们知道,在数据库应用系统中,SQL 语句的性能好坏至关重要.如果 SQL 语句性能很差,可能会导致整个数据库应用系统的性能也非常差.那么,如何监控数据库系统中 SQL 语句的性能,导致 SQL 语句性能差的原因是什么? SQL 语句运行过程中对系统资源的使用情况如何?系统资源存在哪些瓶颈?在 Informix 11.5 中,主要提供了两个工具来解决上述问题.一个是 set explain 命令,我们可以通过查看数据库的查询计划来分析导致 SQL 语句性能差的原因并给予相应的调整,另一个是 SQ

C# 程序性能提升篇-1、装箱和拆箱,枚举的ToString浅析

前景提要: 编写程序时,也许你不经意间,就不知不觉的使程序代码,发生了装箱和拆箱,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候,减少装箱和拆箱,是优化程序提高效率的一种途径.不仅跬步,无以至千里,不积小流,无以至江河.优化从点点滴滴做起. 一.装箱拆箱概念: 这里是官方定义:http://msdn.microsoft.com/zh-cn/library/yz2be5wk.aspx 装箱:值类型→引用类型 拆箱:引用类型→值类型 二.为什

Java项目性能监控和调优工具-Javamelody的学习总结

1.简介: JavaMelody能够在运行环境监测Java或Java EE应用程序服务器.并以图表的形式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求.jsp页面与业务接口方法(EJB3.Spring.Guice)的执行数量,平均执行时间,错误百分比等.图表可以按天,周,月,年或自定义时间段查看. 2.准备: 下载javamelody-1.47.0.jar和jrobin-1.5.9.1.jar,引用到项目中. 3.配置方法: 一般

第21/24周 性能监控(PAL工具)

大家好,欢迎来到性能调优培训的最后一个月.在过去的5个月里,我们谈了SQL Server的各种性能相关的话题,包括性能调优的技术和问题. 但当在你面前,SQL Server没有按你预想的运行时,你会怎么办?为了帮你处理这个情况,今天我们会谈到下性能监控技术,下周我们会详细谈到SQL Server里所谓的等待统计(Wait Statistics).现在开始我们的性能监控. 让我们建立一个基线! 很多人坐在他们的SQL Server前,知道它的性能非常差,却不知道如何找出潜在的根源,也不知道如何解决