性能监控与调优篇之【01-概述篇】

1. 概述篇

1.1. 大厂面试题

支付宝:

支付宝三面:JVM 性能调优都做了什么?

小米:

有做过 JVM 内存优化吗?

从 SQL、JVM、架构、数据库四个方面讲讲优化思路

蚂蚁金服:

JVM 的编译优化

jvm 性能调优都做了什么

JVM 诊断调优工具用过哪些?

二面:jvm 怎样调优,堆内存、栈空间设置多少合适

三面:JVM 相关的分析工具使用过的有哪些?具体的性能调优步骤如何

阿里:

如何进行 JVM 调优?有哪些方法?

如何理解内存泄漏问题?有哪些情况会导致内存泄漏?如何解决?

字节跳动:

三面:JVM 如何调优、参数怎么调?

拼多多:

从 SQL、JVM、架构、数据库四个方面讲讲优化思路

京东:

JVM 诊断调优工具用过哪些?

每秒几十万并发的秒杀系统为什么会频繁发生 GC?

日均百万级交易系统如何优化 JVM?

线上生产系统 OOM 如何监控及定位与解决?

高并发系统如何基于 G1 垃圾回收器优化性能?

1.2. 背景说明

生产环境中的问题

  • 生产环境发生了内存溢出该如何处理?
  • 生产环境应该给服务器分配多少内存合适?
  • 如何对垃圾回收器的性能进行调优?
  • 生产环境 CPU 负载飙高该如何处理?
  • 生产环境应该给应用分配多少线程合适?
  • 不加 log,如何确定请求是否执行了某一行代码?
  • 不加 log,如何实时查看某个方法的入参与返回值?

为什么要调优

  • 防止出现 OOM
  • 解决 OOM
  • 减少 Full GC 出现的频率

不同阶段的考虑

  • 上线前
  • 项目运行阶段
  • 线上出现 OOM

1.3. 调优概述

监控的依据

  • 运行日志
  • 异常堆栈
  • GC 日志
  • 线程快照
  • 堆转储快照

调优的大方向

  • 合理地编写代码
  • 充分并合理的使用硬件资源
  • 合理地进行 JVM 调优

1.4. 性能优化的步骤

第 1 步:性能监控

  • GC 频繁
  • cpu load 过高
  • OOM
  • 内存泄露
  • 死锁
  • 程序响应时间较长

第 2 步:性能分析

  • 打印 GC 日志,通过 GCviewer 或者 http://gceasy.io 来分析异常信息
  • 灵活运用命令行工具、jstack、jmap、jinfo 等
  • dump 出堆文件,使用内存分析工具分析文件
  • 使用阿里 Arthas、jconsole、JVisualVM 来实时查看 JVM 状态
  • jstack 查看堆栈信息

第 3 步:性能调优

  • 适当增加内存,根据业务背景选择垃圾回收器
  • 优化代码,控制内存使用
  • 增加机器,分散节点压力
  • 合理设置线程池线程数量
  • 使用中间件提高程序效率,比如缓存、消息队列等
  • 其他……

1.5. 性能评价/测试指标

停顿时间(或响应时间)

提交请求和返回该请求的响应之间使用的时间,一般比较关注平均响应时间。常用操作的响应时间列表:

操作响应时间
打开一个站点几秒
数据库查询一条记录(有索引)十几毫秒
机械磁盘一次寻址定位4 毫秒
从机械磁盘顺序读取 1M 数据2 毫秒
从 SSD 磁盘顺序读取 1M 数据0.3 毫秒
从远程分布式换成 Redis 读取一个数据0.5 毫秒
从内存读取 1M 数据十几微妙
Java 程序本地方法调用几微妙
网络传输 2Kb 数据1 微妙

在垃圾回收环节中:

  • 暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间。
  • -XX:MaxGCPauseMillis

吞吐量

  • 对单位时间内完成的工作量(请求)的量度
  • 在 GC 中:运行用户代码的事件占总运行时间的比例(总运行时间:程序的运行时间+内存回收的时间)
  • 吞吐量为 1-1/(1+n),其中-XX::GCTimeRatio=n

并发数

  • 同一时刻,对服务器有实际交互的请求数

内存占用

  • Java 堆区所占的内存大小

相互间的关系

以高速公路通行状况为例

  • 吞吐量:每天通过高速公路收费站的车辆的数据
  • 并发数:高速公路上正在行驶的车辆的数目
  • 响应时间:车速

Ratio=n

并发数

  • 同一时刻,对服务器有实际交互的请求数

内存占用

  • Java 堆区所占的内存大小

相互间的关系

以高速公路通行状况为例

  • 吞吐量:每天通过高速公路收费站的车辆的数据
  • 并发数:高速公路上正在行驶的车辆的数目
  • 响应时间:车速

性能监控与调优篇之【01-概述篇】

性能监控与调优篇之【02-JVM监控及诊断工具-命令行篇】

性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】

性能监控与调优篇之【04-JVM运行时参数】

性能监控与调优篇之【05-分析GC日志】

性能监控与调优篇之【浅堆深堆与内存泄露】

使用 OQL 语言查询对象信息

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第1 基础  第1章 MySQL基本介绍    1.0 引言    1.1 MySQL Server简介    1.2 MySQL与其他数据库的简单比较    1.3 MySQL 的主要适用场景    1.4 小结   第2章 MySQL架构组成    2.0 引言    2.1 MySQL物理文件组成    2.2  MySQL Server系统架构    2.3 MySQL 自带工具使用介绍    2.4 小结   第3章 MySQL存储引擎简介    3.0 引言    3.1 MySQL存储引擎概述    3.2 MyISAM存储引擎简介    3.3  InnoDB存储引擎简介   第4章 MySQL安全管理   4.0  引言   4.1 数据库系统安全相关因素    4.2 MySQL权限系统介绍   4.3 MySQL访问授权策略   4.4 安全设置注意事项   4.5 小结  第 5章 MySQL备份与恢复   5.0 引言   5.1 数据库备份使用场景   5.2 逻辑备份与恢复测试   5.3  物理备份与恢复测试   5.4 备份策略的设计思路   5.5 小结 第2 性能优化  第6章 影晌MySQL  Server性能的相关因素   6.0 引言   6.1 商业需求对性能的影响   6.2 系统架构及实现对性能的影响   6.3 Query语句对系统性能的影响   6.4 Schema设计对系统的性能影响   6.5 硬件环境对系统性能的影响   6.6 小结  第7章 MySQL数据库锁定机制   7.0 引言   7.1 MySQL锁定机制简介   7.2 各种锁定机制分析   7.3 合理利用锁机制优化MySQL   7.4 小结  第8章 MySQL数据库Query的优化   8.0 引言   8.1 理解MySQL的Query Optimizer  ……  第9章 MySQL数据库Schema设计的性能优化  第10章 MySQL Server性能优化  第11章 常用存储引擎优化 第3 架构设计  第12章  MySQL可扩展设计的基本原则  第13章 可扩展性设计之MySQL Replication  第14章 可扩展性设计之数据切分  第15章 可扩展性设计之Cache与Search的利用  第16章 MySQL Cluster  第17章 高可用设计思路及方案  第18章 高可用设计之MySQL监控 附录A 实验测试Schema创建脚本 附录B MySQL部分系统参数说明及设置建议 附录 C MySQL部分状态说明 索引
SkyWalking 是一个开源的分布式系统跟踪解决方案,旨在帮助用户监控、诊断和调优分布式系统的性能。它采用了全链路追踪的方式,可以跟踪并记录分布式系统中各个组件之间的调用链路和性能指标。 SkyWalking 的工作原理可以概括为以下几个步骤: 1. 代理注入:SkyWalking 需要将代理组件注入到需要监控的应用程序中。这个代理可以通过字节码增强、AOP 等技术实现,以便在运行时捕获并记录关键的调用信息。 2. 数据采集:当应用程序运行时,代理会捕获和收集与分布式跟踪相关的数据,包括调用链路、耗时、异常信息等。这些数据会被发送到 SkyWalking 的数据收集器进行处理。 3. 数据处理:SkyWalking 的数据收集器接收到数据后,会对其进行处理和解析,提取出有用的信息,并进行聚合和分析。这些数据会被存储到指定的存储介质中,如数据库或分布式存储系统。 4. 可视化展示:用户可以通过 SkyWalking 提供的可视化界面来查看分布式系统的运行情况。这些界面可以展示应用程序的拓扑结构、性能指标、调用链路等信息,帮助用户理解和优化系统的运行状况。 总的来说,SkyWalking 通过代理注入、数据采集、数据处理和可视化展示等步骤,实现了对分布式系统的全链路追踪和性能监控。这样可以帮助开发人员快速定位和解决系统中的性能问题,提升系统的可靠性和性能

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值