关于服务性能优化思考


        在开发过程中常常有这样的抱怨:
        RD1:“这服务怎么老超时,到底行不行啊?”
        RD2:   “啥这点量高峰期就不行了,我得找运维给我加机器,并发量不行啊!”
        开发者在开发的过程中都需要时刻注意自己服务的性能,但有时候会常常在思想上犯一个毛病 :“性能做得好没啥用处,能用就行,流量高峰期扩容吧 ” 。那我们谈谈为什么需要对服务进行性能优化?至少有两点,一是提高产品体验,服务性能越好响应时间越低,降低超时率,客户体验越好;二是节约经济成本,服务性能好能带来QPS的提升,现有的资源能承受更大容量。
其实这和衡量服务性能息息相关的,那么我么想讨论服务的性能指标有哪些呢?

一、服务指标

1.应用性能指标

     QPS/QPM :能承受的并发数,通常一秒为单位

     Response Meantime (RT):请求的平均响应时间,通常单位为毫秒

     TP 50/90/99:响应时间的分布,通常关心的是top 99,平均响应时间反没有多大价值

2.机器性能指标

1)内存和线程指标

JVM本身提供了一组管理的API,通过该API,我们可以获取得到JVM内部主要运行信息,包括内存各代的数据、JVM当前所有线程及其栈相关信息等等。各种JDK自带的剖析工具,包括jps、jstack、jinfo、jstat、jmap、jconsole等,都是基于此API开发的。

很多公司的组件采集的JVM的一些参数也是利用JVM 本身的API,例如:
ThreadMXBean来记录JVM使用内存状况,jvm.thread.count,jvm.thread.daemon.count,jvm.thread.totalstarted.count等实时运行指标。
MemoryInformations来记录JVM内存使用状况,jvm.memory.used,jvm.memory.oldgen.used,jvm.memory.eden.used等指标。
GarbageCollectorMXBean来记录GC状况,ygc,fgc等。

2)cpu指标

jvm.process.cputime:java 进程占用的cpu时间,单位是ns

load.1minPerCPU :从线程等待cpu处理的个数来衡量CPU的空闲程度

cpu.idle /cpu.busy :idle是从时间的角度衡量CPU的空闲程度

cpu.switches:线程上下文切换

cpu.iowait:等待IO或者阻塞

 

说明:

*** 调度器:

其负责调度两种资源(线程,中断)。调度器针对不同的资源有不同的优先级,下面三个优先级从高到低依 次如下:
(中断&#

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值