勤杂工

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

一、遇到的问题

1由于没有压测机,所以使用了自己的mac 电脑作为压测机,之前在测试服测试时所有的指标都正常,没有出现很大的问题

在线上压测时,出现了线程数设置100,就错误率很高,最终压测不了

所以赶紧找问题,一开始以为是jmeter 设置的延迟时间问题,直接将延迟时间设置10000ms ,但是结果发现再次增大线程数还是直接报错了

最终在网上看到是因为本地电脑的端口最大从46-60 ,当采样数超过端口数量时,请求数直接上不去了。最终解决方案更改本地可用端口,或者更换压测机

 

2有些接口,当设置https 时不管线程数增大多少,tps 上不去,资源无压力,响应时间巨大

最终发现是网络带宽限制,因为公司网络最大100M带宽,所以请求都阻塞了

最后解决方法:增大带宽是不行的,只能调整jmeter 的参数

将https 更改成http ,并且将采样器中的httpclient4 请求模式更改为Java (这种只适用于单线程)

3下单接口tps 异常慢,开发不知道慢在哪里

解决方案:通过开发了解整个下单流程

1.获取商品详情 2.校验订单信息(是否用药助手) 3.获取活动信息 4.构建orderDetail 5.校验活动过记录 6.校验购买数量 7.校验订单数量 8.冻结丁当 9.更新库存 10.保存订单

具体询问每个步骤中可能出现慢sql 和调用外部接口的地方

如果怀疑哪个步骤慢,则通过注释该步骤代码,前后对比的方式来查看是否慢,以及慢的原因

一般解决方案:对于慢sql 去优化sql ,没有索引的加索引,数据量太大则分裤分表查询

对于有些数据采用直接读取缓存,并且优化相关下单步骤 中的判断逻辑

将有些步骤中的同步执行,更改为异步 

 

4现上监控发现服务在一天内fullGC频率较高,而系统资源没怎么消耗

初步怀疑内存泄漏,怀疑原因:每次fullGC时,堆内存并没有全部释放掉,大概依然占用400M 空间

jvm 参数设置问题,通过运维了解到,jvm参数没有设置新声代大小 

部分微服务的堆内存占用一直过高,就算平时不做活动依然占用很高,这个需要排查,怀疑是在实现部分业务时生成了较大类对象用于查库(因为公司业务复杂性决定)

以上这些未被验证,开发也没有积极配合查询

 

posted on   勤杂工  阅读(392)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
 
点击右上角即可分享
微信分享提示