面试总问的jvm调优到底是要干什么?程序员大宇

1.压力测试的理解,xxx的性能10w/s,对你有意义么?

没有那家卖瓜的会说自己家的不甜,同样,没有哪个开源项目愿意告诉你在对它条件最苛刻的时候压力情况是多少,一般官网号称给你看的性能指标都是在最理想环境下的,毫无参考意义。

举个栗子,Redis官网压测的例子,256字节的读速度11w/s,写速度8.1w/s,都知道redis优点是多变的数据结构,string、List、hash、set、sortset,实际工作稍微复杂的环境往往都是各种结构混合使用,字符串长度各异,你需要的是真正在你的工作环境下,即:你混合使用的数据结构下,你的访问压力下,你的字符串长度下redis的x响应性能。这个值往往跟官方公布的差异很大。我的经验,我们是视频行业,相对字符串长度较长,在压缩序列化之后,主要使用String和List,性能在访问client=200-400左右,qps相应能到5w,超过这个client值,qps下降而且服务器负载上扬,容易引起服务器雪崩效应,这个5w,才是真正基于我们业务使用下redis的性能瓶颈。

我这个服务压力2000tps,你觉得很牛逼?

看着很牛逼对不对,好像tps值越高显得能力越强一样,其实很可笑,如果性能好只是比这个,那写一个1+1=2的程序估计是无敌了吧。具体问题要具体分析,你牛逼你要说明你牛逼在哪里,在什么条件下,什么样子的背景,才能说你的tps是多少,这样才有意义。

反正线上没出现过问题,我们撑得住,你确定?

线上没出现过问题,不代表流量不会增加,流量不会增加不代表业务不会复杂,业务复杂性能下降是很有可能的,没有压力测试做保证,出问题就是大问题。

压力测试都是qa在做,有问题会反馈给我,你的服务极限到底在哪里?

压测不是玩笑,你的4个9的指标呢

好的服务都会有一项指标,叫4个9,即99.99%得服务可靠性。这是衡量一个服务是否优秀的普世标准,压力测试的好坏最直观的影响4个9的保障。压力测试就是用来确保服务的稳定,给出服务稳定极限条件。稳定指的是服务负载,cpu利用率,接口的响应时长,网络的延迟,结果准确性等等都在你的标准之内。而这些指标又相互影响。

条件,用尽量多的已知去推测未知,模拟仿真,你要做的预测未来

硬件条件:服务器cpu核数、内存大小、网络条件、同宿主机下其他服务影响,软件条件:虚拟访问用户数、gc的稳定程度,响应时长要求,第三方依赖的可用程度、jdk的不同版本等都会严重影响压力测试的结果,造成你的压测结果上线之后达不到逾期。如果这些条件不注意,很可能你压测时按照达标条件tps=1000,其实线上tps才500的时候,服务已经崩溃了。压测的时候,最好保障压测环境与线上一致。你的结果才更有意义。

3.你想要的到底是个什么东西

tps只是结果,虚拟用户数,线程数,平均响应时长,错误数,90%的平均响应时长,服务器负载,结果准确性尽量用越来越多的点来评估你的服务。

tps:服务处理的吞吐量,每秒响应请求的数量,tps是压力测试最直观的结果,是衡量服务性能的一个结果性指标,一般说压力测试性能值就是tps值。最浅显直白的理解,统计access日志每秒的总数就是那一秒的tps值。

错误数:一般服务压力测试的时候是不允许出现错误的,即错误数:0%,但是复杂条件下,有的服务是允许出错率不超过x%的,看服务而定。

结果准确性:多线程下访问下结果的正确性。这个在压测的时候往往容易被忽略。这个需要你在压力测试的时候抽查访问接口,查看结果是否正确,曾经碰到过qa测试通过的接口,上线之后发现返回结果不正确,内网回测正确,后来内网压力测试的时候成功复现,是由于使用了不安全的多线程代码导致的,其实压测的时候抽查看一眼,很容易看出来。

线程数:这个指标不在各大压力测试工具监控之内,但是这其实是压力测试非常重要的服务指标。根据经验,好多时候服务崩掉的时候,线程数已经满了,好多时候应用服务器的线程在某个范围之内,服务是最健康的状态,超过某个范围,服务处于不稳定状态,处于有点网络抖动延迟都容易崩溃的临界点,所以熟悉这个值,你就心里清楚你的服务当前在什么状态下。

多说一句,这个值为什么又可以不去管它:其实真正线上流量大的时候经常会有一种现象:服务直接重启撑不起来当前流量,调整前端流量分配(部分nginx摘除重启server等做法),慢慢启动就可以支持起线上流量,再打开所有流量,发现server又可以支持没问题了(ps:所以nginx有一个流量缓增的收费模块就是干这个的),但是慢慢启动线上流量和一次打过来线上流量,其实在同一时刻虚拟用户数是差不多,斯以为这种现象是因为服务刚启动时流量全打过来时需要创建的可复用复用对象和线程很多,容易造成了服务的不稳定,那么其实压力测试时虚拟用户数重要么?它真的是不可代替的么?其实虚拟用户数只是用来探测服务性能的一个表现的总结而已,服务真正的健康情况其实反映在线程数,响应时长,服务器负载,性能瓶颈点(比如事务或者锁)等等,而虚拟用户数只是这些健康极限情况的表象总结而已。就是说,当压力测试总结的虚拟用户数在某一个范围值tps达到多少,其实内在真正描述的是在这个虚拟用户时,由于线程数是多少,负载是多少,平均相应时长是多少,线程数是多少,gc稳定程度是多少达到了tps值是多少。

4.面试总问的jvm调优到底是要干什么?

5.常用的压力测试工具及命令

loadrunner,jmeter,自写jar包,tcpcopy等。

jmap,jstack,jstat,详细的讲解推荐《深入理解java虚拟机》,其实不神秘但是特别实用,jstat查看内存回收概况,实时查看各个分区的分配回收情况,jmap查看内存栈,查看内存中对象占用大小,jstack查看线程栈,死锁,性能瓶颈,某个线程使用cpu过高导致服务整体慢等都可以通过在这些命令辅助Linux命令看出来。

top,vmstat,sar,dstat,traceroute,ping,nc,netstat,tcpdump,ss等等具体请百度。

你的服务是跑在linux系统上的,是依赖第三方服务出问题了?是受别的服务影响还是自己利用资源过高?是网络抖动了?是网卡满了么?是cpu性能不够么?是写入磁盘瓶颈了?内核数据交换频繁?负载变高了?都需要linux命令才能看出来。

6.性能诊断到底难在哪里?

收到服务报警了,怎么办?打印的log日志都是连接不上memcache,难道是memcache的问题,手动客户端连接memcache没问题,难道是网络的问题,测试网络延迟很低,那到底怎么了?

其实服务类似于人体,有的人感冒的时候鼻子通气嗓子疼,有的人头疼,有的人流清涕,有的人流黄涕,对症下药要治标治本。没有什么统一的答案,这就体现了经验的重要性。举个栗子:某天晚上突然收到报警,vpn登陆发现服务还正常返回,暂时没有报错,但是负载明显升高,resin线程数飙升到1000多(正常情况下该服务高峰期线程数500-700),cpu使用率偏高,排查:1.访问量激增?统计发现并没有。2.网络状况异常?通过访问服务器发现也没有,稍微慢些是因为负载稍高。3.程序有瓶颈打印内存栈线程栈都没发现4.受其他同宿主服务影响?查看监控发现并没有。仔细观察发现流量稍有波动但是不明显。为什么负载高呢?最后排查发现是前端nginx带宽满了,带宽拥堵造成代理的后端服务无法及时返回数据,后端服务的句柄数拥堵造成服务器负载升高,服务器负载升高又使线程数和cpu利用率升高,造成服务的个别访问响应时长过长,触发报警。再严重些估计就会造成连接memcache超时,log打出连接memcache错误的日志。蝴蝶效应而已。想要快速抓住重点,其实跟医生一样,就需要你对服务足够了解,平时多关心服务状态而且经验真的很重要。

7.到底是加机器还是优化服务?

成本,加机器是一种成本,优化服务也是一种成本,很有可能你的服务很多依赖第三方,推动他们符合你的要求也是一种沟通成本,很多时候,老板的思路永远在于成本,如果他认为服务有很大的优化空间,那你找他加机器他多半是不会同意的,所以这种要资源的事情,请考虑成本,也有一个问题,大公司往往会哭的才有奶吃,这也很现实,反正归根到底,对于我们这些搞服务端的来说,成就感不就应该是把硬件服务器资源压榨到底么。

THE END
1.性能测试:关注的核心指标解析在性能测试中,我们需要对软件进行长时间的稳定性测试,确保其能够在各种条件下稳定运行,不会出现异常。综上所述,性能测试关注的核心指标包括响应时间、吞吐量、资源利用率、错误率、并发用户数和系统稳定性。这些指标共同构成了衡量软件性能的重要标准。在进行性能测试时,我们需要全面关注这些指标,确保软件能够满足用户的https://zhuanlan.zhihu.com/p/12805153361
2.平均响应时间(SunJavaSystemApplicationServer9.1部署规划响应时间是指 Application Server 为用户返回请求结果所花的时间。响应时间受很多因素的影响,例如,网络带宽、用户数、提交的请求数和类型以及平均延迟时间。 在本节中,响应时间是指平均响应时间。每种类型的请求都具有其自己的最小响应时间。不过,在评估系统性能时,请根据所有请求的平均响应时间进行分析。 https://docs.oracle.com/cd/E19159-01/820-4903/abfch/index.html
3.java平均响应时长计算平均响应时间多少合适在确定性能需求时,可以用平均事务响应时间来衡量系统的性能,也可以使用90%或者95%用户响应时间来作为度量标准,不冲突,因为实际在定义某些系统的性能需求时,一定范围的请求失败也是可以被接受的。 一般情况下,如果平均事务响应时间满足要求了,那90%也基本满足了,看一个就可以了,但是不一致的时候,比如,平均响应时间在临https://blog.51cto.com/u_12192/9475309
4.智能客服的平均首次响应时长是否包含客服未响应的会话?智能客服的平均首次响应时长是否包含客服未响应的会话?有赞帮助中心将为您提供有关微商城、小程序等相关产品的详细解决方案。https://help.youzan.com/displaylist/detail_4_4-1-84942
5.天猫综合体验星级中的阿里旺旺平均响应时长是指什么?3.商家人工阿里旺旺在当天未回复,即无对话轮次(未回复对话通过阿里旺旺回复率考核) 4.跨自然天的对话轮次不计入(未回复对话通过阿里旺旺回复率考核) 5.子账号、商家账号间的对话轮次不纳入统计 【温馨提示】 阿里旺旺人工平均响应时长纳入基础服务分的考核于北京时间2020年9月1日正式生效。https://www.5pao.com/theuser/hydetail-56389.html
6.服务器平均响应时长计算,并发数=QPS*平均响应时间每秒查询率QPS:对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,即每秒请求数,即最大谈吐能力。 并发数:并发数和QPS是不一样的概念,通常说QPS会说多少并发用户下QPS,当QPS相同时,并发用户数越大,网站并发处理能力越好。当并发用户数过大时,会形成进程(线程)频繁切换,反正真正用于处理请求的时间变少https://blog.csdn.net/weixin_39618169/article/details/119403265
7.客服接待量为2个,第一通会话客服的响应时长分别为50秒40秒30客服接待量为2个,第一通会话客服的响应时长分别为50秒、40秒、30秒,共回复3条信息;第二通会话客服的响应时长分别为20秒、10秒、5秒,共回复3条信息,那么客服平均响应时间是多少?A.26.12秒B.25.83秒C.28.21秒D.29.55秒的答案是什么.用刷刷题APP,拍照搜索答疑.刷刷题(shuashuathttps://www.shuashuati.com/ti/d43cb563c23b4cd78f809737e83d6fba.html
8.性能测试之APP页面响应时长其中TotalTime代表当前Activity启动时间,将多次TotalTime加起来求平均即可得到启动这个Activity的时间。 备注:实时监控当前正在运行的Activity命令 》adb shell 》logcat | grep ActivityManager二、APP主要页面响应时长测试 测试方案: 1. 使用安卓自带 SDK 中的 adb shell screenrecord 录制操作屏幕(MP4格式) 2. 使用 https://www.jianshu.com/p/fe3293771b32
9.京东客服入职企业文化考试选择题库2.咚咚30S响应率要求达到的目标值是多少? [D] A.≥80% B.≥85% C.≥90% D.≥95% 3.咚咚平均响应时长要求达到的目标值是多少? [A] A.≤15S B.≤20S C.≤25S D.≤30S 4.当顾客提出的问题不知道怎么回答时,正确的做法是? [C] A.回复不知道 https://www.mmker.cn/article/3746.html
10.京喜开放平台咚咚缺陷率细则及规则商家未按照《咚咚服务使用管理规则》提供咚咚在线咨询及400热线服务的情形。京喜将通过对咚咚满意度、咚咚平均响应时长及咚咚留言率三项指标考核商家的咚咚缺陷率。 京喜商家在运用咚咚的时候,要知悉以下京喜开放平台咚咚缺陷率细则,避免因为不了解规则而受到平台处罚,来了解以下规则解读: https://www.maijia.com/article/519137
11.抖音电商学习中心客服数据透传是飞鸽在【抖店App-接待】页展示了首次响应时长、平均响应时长、3分钟回复率(会话)、不满意率的实时数据,客服可以在抖店App上随时查看客服数据并且接收数据警示,帮助客服实时评估回复效率,快速响应买家进线! 根据《商家体验分规范》规定,飞鸽IM客服系统的近90天人工客服会话量中,每天8-23点,3分钟人工https://school.jinritemai.com/doudian/wap/article/aHWrB32aEzDM
12.速看!京东风向标各项指标详解例:商家11月23日进行数据查询(风向标中默认数据展示为前一天数据,即11月22日)。其中“咚咚平均响应时长/咚咚30秒应答率”对应的数据统计范围是10月19日-11月17日(11月23日前推6天)。商家也可在“客服管家-考核数据”手动筛选对应时间范围进行统计结果对比 http://www.yunyingwang.cc/115251.html
13.抖音小店服务分怎么提升(7个方法助推服务分高涨)在会话结束时,一键发送邀请话术和图片以增加评价数 l举bao恶意评价: 如果遇到不文明的消费者,不要与其正面冲突或不回复,而是点击举bao,选择恶意给客户评价不满意的原因,同意授.权平台查看聊天记录然后提交。 3.降低IM平均响应时长 l 设置声奇弹窗闪烁提醒: https://guangzhou068476.11467.com/news/8202501.asp
14.从用户角度,如何评价智能驾驶的表现智车科技但是,如果自动起停时长太长,则交通环境发生变化的可能性很大,尤其车辆前方容易出现新的交通参与者如行人等,此时如果前车自动起步,则容易引发安全风险,应该让用户执行某种操作(如确认) 后再起步,以避免长时间停车导致场景变化而造成碰撞事故。 应该综合平衡安全、舒适、效率的需求,设定合理的自动起停时长,通常不应低https://www.shangyexinzhi.com/article/22052944.html
15.性能测试性能需求挖掘性能方案制定及压测嘲设计之疑惑与2、Tps每秒处理事务个数 每个事务处理的平均时长 3、TPS(每秒处理请求数)、响应时间(服务器响应时间+网络时间)、错误率、QPS(每秒从服务器接收的数据量) 4、数据库(或中间件)非常慢了 5、中间件无响应 JVM堆内存用满,不停的进行GC,导致响应超慢(但是还没有OOM,否则就报错了)处理HTTP请求的线程,都被占用或https://cloud.tencent.com/developer/article/1527489
16.《青海省道路运输车辆动态监督管理实施办法》正式印发——湖北省(3)车辆实时监控情况。车辆入网率、车辆上线率、轨迹完整率、数据合格率、卫星定位漂移车辆率、平均车辆超速次数、平均疲劳驾驶时长、平台查岗响应率; (4)车辆数据保存情况。违法驾驶及处理信息存档情况,其中动态监控数据应当至少保存6个月,违法驾驶信息及处理情况应当至少保存3年。 http://www.hbafxh.org/NewsShow_1735.html
17.寻找下一个特斯拉暴涨奇迹!ARK“牛市女皇”重磅报告:牛年15大投资根据我们的研究,人们花费在视频游戏上的平均时长在未来五年内会从1.1小时增至1.5小时。 如果变现的趋势和游戏时长的增长趋势接近,那么游戏内购收入将以每年21%的复合增长率增加,金额从2020年的1300亿美元增长至2025年的3500亿美元。 增强现实(AR)的市场规模将扩张 https://wallstreetcn.com/articles/3618592
18.电力系统录波仪故障录波:具备完整的故障录波器功能,按预定义的故障判据监测实时信号,在符合判据时启动波形录制。可在电力系统发生故障时,自动准确地记录故障前、后过程的各种电气量的变化过程。 长时录波:长时间连续记录模拟量的波形和有效值、开关量状态。可记录31天,可选采样频率为10kHz。 http://www.shlydk.com/Article-3096516.html