web类型系统架构常见瓶颈问题以及解决方向

web系统性能常见瓶颈

问题起因引发问题
静态资源加载缓慢页面响应慢,长时间空白
同时在线人数过多1、session数过多单机内存不足
2、数据库连接数不足
单请求数据量过大1、单请求导致内存溢出2、

创业型web架构:
cache与mq为可选组件,app可集群可单点

业务量发展迅速升级版web架构

线上首先面对的首要挑战

1、静态资源加载缓慢

解决方案:

  1. 不常改的js,css、图片等放到cdn中,(生效缓慢是修改文件面对的问题)
  2. 前端代码层面优化,例如图片懒加载,(没明显缺点)
  3. 文件压缩,例如vue打包压缩产出文件,nginx开启gzip(压缩质量要保证,图片只显示一半问题排查会很挠头)

2、session不足

在线人数过多时每个连接生成一个session将导致session不断增多,内存占用升高,解决办法:

解决方式优点缺点
app多副本部署不同机器分担session压力app有状态时候须额外维护,无状态也须考虑哈希一致性
session转由cache组件维护app与session不再耦合,cache组件技术成熟且丰富额外维护cache组件

使用者2种方法或者混合使用,第一种方法可由tomcat内置session方案实现,第二种有Redis、Memcache、
spring-session等解决方案

3、数据库连接数不足

开发时候不进行并发测试将难以发现并发上来后出现的数据库连接数不足的情况,解决方案可依次渐进

  1. 此时先尝试提升数据库支持连接数,扩大应用的数据库连接池
  2. 数据库查询慢sql,先尝试代码层面提升事务提交速度,再考虑数据库层面优化

4、单请求导致内存溢出

特殊场景下数据处理量可能占用大量内存,配置不够时可能会导致服务挂掉,例如

  1. POI操作excel文件时候将占用大量内存,可能会导致资源不足,须整体考虑业务
  2. sql执行大量加载数据到内存中,须优化代码或整体设计
  3. 处理事务的代码块中有与sql无关的耗时操作例如读写文件导致长时间不提交事务可能导致事务超时抛异常,并且可能导致长时间占用数据库连接导致连接池耗尽
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值