网站首页 > 技术文章 正文
- 不同角色的性能反馈
客户:你们的网站/APP点了下在那一直转圈圈,一动也不动! 怎么这么慢,这么卡啊!
领导: 这个接口怎么等待这么长时间才会返回数据? 都3秒了!为啥我们网站最大并发量这么少?
运维:你程序报OOM异常了! 你程序干啥了,CPU都100%了!
一开始运行得好好呀,这是咋滴了! 作为程序员的你,是不是一脸懵圈!
- 提取关键性能指标
响应时间、吞吐量(QPS)、系统负载,资源利用率(cpu,内存,磁盘,带宽)
- 如何进行性能分析?
检查请求处理的各个环节的日志,分析哪个环节响应时间不合理,然后检查监控数据,分析影响性能的主要因素是内存、磁盘、网络、还是CPU,是代码问题,还是架构设计不合理,或者系统资源确实不足。
1). 查看代码执行耗时工具:Arthas中的trace命令
2). 查看系统负载,资源利用率; 相关命令:w/top,free,df
- 性能优化策略
Web前端性能优化
- 减少HTTP请求数, 主要手段: css/js文件合并,多张矢量图合并
- 使用浏览器缓存,主要手段:设置HTTP头中的Cache-Control和Expires的属性
- 启用压缩,主要手段:Nginx启用Gzip
# 开启gzip
gzip on;
# 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
gzip_min_length 1k;
# gzip 压缩级别 1-10
gzip_comp_level 2;
# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
- CSS放在页面最上面、JS放在页面最下面
- 减少Cookie传输,主要手段:对于某些静态资源的访问根本不需要cookie,可以考虑使用独立域名访问
- 静态资源使用CDN加速
应用服务器性能优化
- 优先考虑使用缓存,需要注意如何保证缓存数据一致性?能删缓存时不要去更新缓存。
- 异步处理,一些非核心业务逻辑,可以使用消息队列,线程池进行异步操作。
- 集群化部署,当一台服务器负载压力过大响应慢时,可考虑集群化部署提高性能。
存储性能优化
- 数据库:建立索引,读写分离,分库分表
- 缓存:读操作走slave节点,写操作走master节点。字典数据可以做预热处理。
- 性能检测方法
- 最简单最常用的方法:postman请求一把,看看响应是不是快了。
- 性能测试: 用jmeter对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
- 总结
性能优化,不是出现问题才去做的,而是实时想着去做。既能提高技术,又能解决问题,何乐不为!
- 上一篇: Nginx从概念到实战:原理、配置与踩坑全解析
- 下一篇: 一文搞定计算机二级:复习资料全梳理
猜你喜欢
- 2025-07-21 宝塔面板Nginx如何提高网站访问速度?
- 2025-07-21 接口调试工具ApiPost中form-data/x-www-form-urlencoded/raw区别
- 2025-07-21 高并发场景下,Nginx性能如何提升10倍?
- 2025-07-21 高并发场景下,Nginx如何抗住千万级流量?
- 2025-07-21 浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf
- 2025-07-21 为什么你的网站加载慢?90%的人忽略了这2个设置。
- 2025-07-21 别再无脑复制Nginx配置了!掌握这10个"性能核弹"级参数
- 2025-07-21 你的Nginx配置,可能就是你网站最慢的一环,注意这几个优化参数
- 2025-07-21 深入浅出HTTP压缩技术(http2压缩)
- 2025-04-24 Nginx从概念到实战:原理、配置与踩坑全解析
- 08-06中等生如何学好初二数学函数篇
- 08-06C#构造函数
- 08-06初中数学:一次函数学习要点和方法
- 08-06仓颉编程语言基础-数据类型—结构类型
- 08-06C++实现委托机制
- 08-06初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 08-06一文讲透PLC中Static和Temp变量的区别
- 08-06类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 1522℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 650℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 527℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 461℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 460℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)