Java web应用性能分析概叙

        “系统慢”,这是任何一个应用都会出现的问题,面对“系统慢”的问题,客户、测试、开发、管理者等不同角色的人员有不同反应:

        客户:啥破东西啊,这么卡!

        测试:性能bug已提交。

        开发:我本地很快啊,要不你重启一下!

        管理者:开会了。

        OK!“屁股决定脑袋”,扯淡结束,回归正题。

        

        为了便于区分,根据web请求响应模型,粗略分成客户端慢、服务端慢。

客户端慢

        客户端慢的原因比较难以控制(客户端的环境影响),因为差异性太大,且大部分原因是客户端所在环境导致,每个终端的情况可能都不一样;因此这里只做归纳,不做具体指导。

        但是在我们设计功能时需要考虑客户端慢的情况,比如物联网设备的弱网环境、客户端带宽不足导致视频通话或者影视观看卡顿、大型集会现场通过手机流量上网造成的基站通道拥堵(几万人的活动现场、无运营商加持,只通过当地基站,特别是拍照发朋友圈)。

        如果是因为应用导致的客户端慢,这个还是要重视,一般这种情况都归结于服务端慢,比如现场签到(扫同一个码)抽红包,扫码没有反应,客户端一直在转圈直到超时,排除客户端网络环境良好的原因,那么就是我们扫码服务接口对并发支持不够导致(这种都会在后面服务端慢找对应的)

服务端慢

        一般web应用慢,默认指服务端慢。因此本文重点讲解服务端慢。

        服务端慢的情况有很多:如下图所示,图一中每一个环节都可能会导致“系统慢”,再详细点如图二所示,一个web页面请求和响应整个过程中的每个节点都会导致“系统慢”,包括:服务器、网络、客户端浏览器、服务端的组件和应用。

        比如:web应用中的文件上传入库功能,多客户并发的上传大xls文件,100个用户并行上传100M的xls文件,并行上传过程中,服务端不仅仅要接受文件、还要打开文件逐行解析入库,不仅仅占用服务器带宽、CPU/内存/磁盘/数据库/JVM/GC都有影响。

服务端慢的原因
  1. 网络攻击:DDos攻击、网站CC攻击、XSS跨网脚本攻击、CSRF等;  如ddos这种,占用服务端连接数,让正常业务请求无路可走。
  2. 服务器带宽不足:服务器带宽不足会导致网络拥堵,web应用访问变慢,以及访问报错(408 request timeout,504 gateway timeout),影响客户体验,最终会导致潜在客户流失。
  3. 服务器资源不足:(cpu/内存/磁盘/网卡/显卡等性能瓶颈)、容器性能瓶颈(docker等),
  4. 中间件性能瓶颈:(RPC框架、WEB服务器、MQ消息队列(KFK、RocketMQ、RabbitMQ等)、
  5. 数据库性能瓶颈:(关系型数据库Oracle、MySQL、PostgreSQL、SQL Server等;非关系型数据库Redis、MongoDB,ElasticSearch等)、
  6. 应用性能瓶颈:(前端页面加载慢、jvm、GC、锁、线程池、java容器使用不当、业务设计不合理、框架设计不合理、写日志文件、并发)

        当然很多服务端慢的情况都是关联影响的,需要综合具体情况具体分析。这里先做一个概叙,待后续整理发布。

     图一 web软件架构图

图二  基于springclod的软件架构图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/551199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式工程师如何摸鱼?

有老铁问我,做嵌入式开发要加班吗? 也不知道搞什么鬼,现在的年轻人对加班这么抵触。 我刚做开发那会,啥也不懂,每天基本都要加班到晚上7-9点不等,我并不抵触加班,因为早早回家,也没什…

常见的地图绘制方法,这个包全包了~~

在上一篇介绍完Bokeh精美可视化作品之后,有小伙伴咨询我能不能稍系统的介绍下如何在地图上添加如柱形图等其他元素的付方法? 这就让我想到一个优秀的地图绘制可视化包-R-cartography,虽然之前也有简单介绍过,本期就具体分享下该包…

Axure实现导航栏的展开与收缩

Axure实现导航栏的展开与收缩 一、概要介绍二、设计思路三、Axure制作导航栏四、技术细节五、小结 一、概要介绍 使用场景一般是B端后台系统需要以导航栏的展开与收缩实现原型的动态交互,主要使用区域是左边或者顶部的导航栏展开与收缩,同一级导航下的小…

【六】fastapi+vue前后端分离项目

前端代码 https://gitee.com/feiminjie/helloworldfront 后端代码 https://gitee.com/feiminjie/helloworld 整体效果 首页 用例管理页 用例详情页

在vue中发现一个prop新的写法在官方文档没有,查百度不行,还有什么其他方法排查不

先看图,最近在接手一个同事的代码,发现prop有这样的写法: 我自己查了官网,以及百度都没有找到这种写法。这时我灵机一动,想到一个方法,vscode有内置的typesscript,自然有prop类型推断&#xff0…

我用这10招,能减少了80%的BUG

前言 对于大部分程序员来说,主要的工作时间是在开发和修复BUG。 有可能修改了一个BUG,会导致几个新BUG的产生,不断循环。 那么,有没有办法能够减少BUG,保证代码质量,提升工作效率? 答案是肯…

:has()伪类使用

下面的 CSS 代码表示如果 <a> 元素里面有 <img> 元素&#xff0c;则这个 <a> 元素就会匹配。 a:has(img) { display: block; } 我们可以使用这个选择器轻松区分是文字链接还是图像链接 a:has(> img) { display: block; } 表示匹配子元素是 <img>…

NineData正式将SQL开发正式升级为数据库DevOps

NineData SQL 开发早期主要提供 SQL 窗口&#xff08;IDE&#xff09;功能&#xff0c;产品经过将近两年时间的打磨&#xff0c;新增了大量的企业级功能&#xff0c;时至今日已经服务了上万开发者&#xff0c;覆盖了数据库设计、开发、测试、变更等生命周期的功能。 为了让企业…

面试:sleep 和 wait

一、共同点 wait(),wait(long)和sleep(long)的效果都是让当前线程暂时放弃CPU的使用权&#xff0c;进入阻塞状态 二、不同点 1、方法归属不同 sleep(long)是Thread的静态方法而wait(), wait(long)都是Object的成员方法&#xff0c;每个对象都有 2、醒来的时机不同 执行sleep(l…

2024第十五届蓝桥杯JavaB组省赛部分题目

目录 第三题 第四题 第五题 第六题 第七题 第八题 转载请声明出处&#xff0c;谢谢&#xff01; 填空题暂时可以移步另一篇文章&#xff1a;2024第十五届蓝桥杯 Java B组 填空题-CSDN博客 第三题 第四题 第五题 第六题 第七题 第八题 制作不易&#xff0c;还请点个赞支持…

钉钉OA审批评论接口,如何@ 人并发送通知

钉钉OA审批评论接口&#xff0c;如何 人并发送通 问题描述&#xff1a; 相关接口&#xff1a;https://oapi.dingtalk.com/topapi/process/instance/comment/add 我希望在钉钉oa审批流程中&#xff0c;添加评论的同时通过“”或者其他方式提醒流程发起人去跟进审批工作。 但我…

【算法一则】编辑距离 【动态规划】

题目 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符 删除一个字符 替换一个字符 示例 1&#xff1a;输入&#xff1a;word1 "horse", word2 "…

一篇出色的答辩状,需要在“答”与“辩”两方面下功夫,你做到了吗?

一篇出色的答辩状&#xff0c;需要在“答”与“辩”两方面下功夫&#xff0c;你做到了吗&#xff1f; 在法律诉讼中&#xff0c;答辩状的重要性不言而喻。它不仅是你回应对方指控的主要手段&#xff0c;也是展示你立场和观点的关键平台。在#李秘书讲写作#看来&#xff0c;一篇…

AMEYA360 | 纳芯微发布首款1200V SiC MOSFET

纳芯微推出1200V首款SiC MOSFET NPC060N120A系列产品&#xff0c;该产品RDSon为60mΩ&#xff0c;具有通孔式TO-247-4L与表面贴装TO-263-7L两种封装形式&#xff0c;可提供车规与工规两种等级。 纳芯微的碳化硅MOSFET具有卓越的RDSon温度稳定性、门极驱动电压覆盖度更宽、具备高…

Spring AI ETL 流水线

先纠正 Spring AI 使用本地 Ollama Embeddings 中的一个错误&#xff0c;当启动 Ollama 之后&#xff0c;Windows会有托盘图标&#xff0c;此时已经启动了 Ollama 的服务&#xff0c;访问 Embedding 时不需要运行 ollama run gemma &#xff0c;只有访问 chat 时才需要启动一个…

k-means聚类算法的MATLAB实现及可视化

K-means算法是一种无监督学习算法&#xff0c;主要用于数据聚类。其工作原理基于迭代优化&#xff0c;将数据点划分为K个集群&#xff0c;使得每个数据点都属于最近的集群&#xff0c;并且每个集群的中心&#xff08;质心&#xff09;是所有属于该集群的数据点的平均值。以下是…

中文核心计算机视觉项目分享:多通道注意力机制得农业作物图像识别检测-完整代码+论文

创新点&#xff1a; 在苹果数据集中&#xff0c;存在遮挡、不同角度的拍摄、光照变化等问题&#xff0c;导致目标检测的性能下降。为了解决这些问题&#xff0c;提出智能感知优化网络和多路径特征融合网络。 智能感知优化网络&#xff1a;帮助模型更好地关注感兴趣的目标区域&…

电商技术揭秘二十七:跨境电商物流解决方案

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

C语言学习笔记之指针(二)

指针基础知识&#xff1a;C语言学习笔记之指针&#xff08;一&#xff09;-CSDN博客 目录 字符指针 代码分析 指针数组 数组指针 函数指针 代码分析&#xff08;出自《C陷阱和缺陷》&#xff09; 函数指针数组 指向函数指针数组的指针 回调函数 qsort() 字符指针 一…

试用模方时,系统一直提示“未找到有效配置文件” ,是需要安装3dsmax吗 ?

问题如图 把文件放在认证管理服务安装目录下即可。&#xff08;注&#xff1a;因平台限制&#xff0c;需要文件的直接后台私信即可哦&#xff09; 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件…
最新文章