性能分析调优记录

静态资源过大

tomcat

开启静态资源压缩

 compression="on"

server.xml中 compression设置为on

<Connector port="8080"
 protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443"    
 compression="on" 
 compressionMinSize="2048" 
 noCompressionUserAgents="gozilla, traviata"   
 compressableMimeType="text/html,text/xml,text/javascript,
application/javascript,text/css,text/plain,text/json"/>

docker

添加如下配置

# Whether response compression is enabled.
server.compression.enabled=false   
# Comma-separated list of user agents for which responses should not be compressed. 
server.compression.excluded-user-agents=   
# Comma-separated list of MIME types that should be compressed.
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
# Minimum "Content-Length" value that is required for compression to be performed.
server.compression.min-response-size=2KB

如果不生效,需要修改代码:

@Override
   public void addResourceHandlers(ResourceHandlerRegistry registry) {
	registry.addResourceHandler("/static/**").addResourceLocations("/static/")
        .setCacheControl(CacheControl.maxAge(10, TimeUnit.MINUTES).cachePrivate())
	.resourceChain(true)
	.addResolver(new GzipResourceResolver());
	super.addResourceHandlers(registry);
}

数据库查询sql耗时较长

需要添加索引或者优化索引
如:select * from table where a=1 and b=2;
这时候如果有两个索引 idx1(a) idx2(b),只会走idx1
需要修改为联合索引:idx(a,b)

内存溢出

运行一段时间docker挂了

  1. 以支付平台为例
    jstat查看,没有频繁的fullgc,但是一会docker挂了,很大可能是栈内存溢出,那么需要看下线程数配置是否合理。
    结果异步处理线程数为4000,太高了,改为20,docker运行平稳

  2. 以呷哺扫码点餐为例
    old区很快就满了,经历几次fullgc后,docker挂了 分析:有大量对象无法回收,拉取内存镜像分析。
    代码里有个功能是:将redis的操作记录写入mysql中,由于redis速度比mysql快得多,所以内存中积压了大量的数据,注掉该部分代码,docker运行平稳

频繁fullgc

因为总内存分配足够大,所以docker不会挂
但是对象一直回收不了,所以一直频繁gc
需要分析,都是哪些对象,为什么无法回收
比如:
server.max-http-header-size = 1000000
这个参数配置,原来配置10MB,不到1分钟old区满了,频繁gullgc
改为1MB,运行10分钟,YGC只有50次左右,没有FGC

注意事项

开始测试之前,需要统计业务各个节点的性能情况
比如:
外卖下单,一个请求30KB;要求目标tps100
统计结果:ons的tps只有20,带宽只有100mbps
分析:ons会成为瓶颈,一次外卖下单收发ons次数达到4次,那么理想情况下外卖下单tps最多到5

再比如:
带宽为10Mbps,想要达到100tps,需要尽量压缩静态资源和请求响应数据的大小,实在无法压缩只能提高带宽

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值