写点什么

性能优化(三)

用户头像
wing
关注
发布于: 2020 年 11 月 22 日

本周是跟随李智慧老师学习架构师训练营的第 9 周,现将本周主要内容总结如下:

一条 sql 执行过程:

客户端--->连接器--->分析器--->优化器--->执行器--->存储引擎

连接器:管理连接,权限认证

分析器:词法分析,语法分析

优化器:执行计划生成,索引选择

执行器:操作引擎,返回结果

存储引擎:存储数据,提供读写接口

prepareStatement:预处理,提前生成执行计划,效率高。预防 sql 注入。


字节码执行流程


自定义类加载器:

1.隔离加载类,同一个 JVM 中加载同一个类的不同版本

2.扩展加载源:从网络、数据库加载字节码

3.字节码加密:加载自定义的加密字节码,在 classLoader 中解密

被 volatile 修饰的共享变量(类的成员变量,类的静态成员变量)保证了不同线程对其进行修改时的可见性

可达性分析

垃圾回收算法:

清理:将可回收的对象标记为空闲,放入一个空闲列表

压缩:

复制:

java 启动参数:

标准参数:所有 jvm 均需实现,先后兼容。-server -client -D -cp -classpath -verbose

非标准参数:不保证所有 jvm 均实现,不保证向后兼容:-Xms -Xmn -Xmx -Xss

非 stable:各 jvm 实现可能不同,以后可能取消。-XX:useConcMarkSwapGC

JVM 性能诊断工具:

基本工具:jstack jmap jps jstat

集成工具:JConsole JVisualVM

启动线程数=【执行时间/(执行时间-IO 等待时间)】*CPU 核数

内存泄漏:

长生命周期对象

静态容器

缓存

创建对象的步骤:静态代码块-->静态字段-->父类构造器-->子类构造器

秒杀


  • 请简述 JVM 垃圾回收原理。

  • 设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?


一个秒杀系统的主要挑战和问题:大流量高并发,可能导致网络资源、服务器资源耗尽,从而导致服务崩溃。秒杀器可能给服务器造成更大的压力。

服务隔离:秒杀系统单独部署,不影响其他系统功能

页面静态化:将商品列表、详情等界面静态化,减少服务器压力。引入 CDN 服务器,静态页面缓存服务器

并发控制,预防秒杀器:随机 url,token,访问上限控制

限流、降级:非主要功能降级

服务器冗余设计:

轻量化服务器:选择合适的中间件及版本


用户头像

wing

关注

还未添加个人签名 2018.05.13 加入

还未添加个人简介

评论

发布
暂无评论
性能优化(三)