
性能调优
文章平均质量分 91
关于MySQL,JVM,Tomcat等调优
caijunsen
努力码
展开
-
MySQL 事务的隔离级别
https://blog.youkuaiyun.com/coco3600/article/details/100508427?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164779169616780366545233%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164779169616780366545233&biz_id=0&原创 2022-03-21 11:04:44 · 229 阅读 · 0 评论 -
JVM(六) - JVM调优
前言JVM调优主要是调整下面两个指标停顿时间:垃圾收集器做垃圾回收中断应用执行的时间。-XX:MaxGCPauseMillis吞吐量:垃圾收集的时间和总时间占比:1/(1+n) ,吞吐量为:1-1/(1+n)。-XX:GCTimeRation=nGC调优步骤:打印GC日志Tomcat则直接加在JAVA_OPTS变量里。 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps ‐Xloggc:./gc.log分原创 2021-04-16 21:50:07 · 779 阅读 · 0 评论 -
JVM(五) - JVM垃圾收集器
前言在上一篇文章中,我们介绍了JVM垃圾回收算法,这些算法属于方法论,而在 JVM 中,垃圾回收的具体实现是由 垃圾回收器(Garbage Collector)负责。在了解 垃圾回收器 之前,首先得了解一下垃圾回收器的几个名词。并发与并行串行(Parallel)单线程 进行垃圾回收工作,但此时 用户线程 仍然处于 等待状态。并发(Concurrent)这里的并发指 用户线程 与 垃圾回收线程 交替执行。并行(Parallel)这里的并行指 用户线程 和多条 垃圾回收线程 分别在不同 CP原创 2021-04-14 01:27:15 · 219 阅读 · 0 评论 -
JVM(四) - JVM垃圾收集算法
前言Java内存运行时区域,其中程序计数器、虚拟机栈、本地方法栈 三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性。在这几个区域内不需要过多考虑回收的问题,因为方法结束或线程结束时,内存自然就跟随着回收了。Java堆 和 方法区 则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样。我们只有在程序处于运行期间时才原创 2021-04-13 16:22:02 · 268 阅读 · 0 评论 -
JVM(六) - JVM性能调优监控工具
前言在线上我们经常会遇见如下几个问题:内存泄露;某个进程突然 CPU 飙升;线程死锁;响应变慢。如果遇到了以上这种问题,在 线下环境 可以有各种 可视化的本地工具 支持查看。但是一旦到 线上环境,就没有这么多的 本地调试工具 支持,我们该如何基于 监控工具 来进行定位问题?我们一般会基于 数据收集 来定位问题,而数据的收集离不开 监控工具 的处理,比如:运行日志、异常堆栈、GC 日志、线程快照、堆内存快照 等。为了解决以上问题,我们常用的 JVM 性能调优监控工具 大致有:jps、jsta原创 2021-04-04 18:45:40 · 322 阅读 · 1 评论 -
JVM(三) - JVM类加载
1、类的生命周期类加载:类加载器将class文件加载到虚拟机内存加载:在硬盘上查找并通过IO读入字节码文件验证:校验字节码文件的正确性准备:给类的静态变量分配内存,并赋予默认值解析:将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程序运行期间完成的将符号引用替换为直接引用初始化:对类的静态变量初始化为指定的值,执行静态代码块(int i= 2,准备阶段是原创 2021-04-03 14:44:27 · 131 阅读 · 0 评论 -
JVM(二) - JVM内存区域
JVM内存区的组成JVM内存区域包括 PC计数器、Java虚拟机栈、本地方法栈、堆、方法区、运行时常量池和 直接内存。下面用一张图来介绍每个区域注意:程序计数器、虚拟机栈、本地方法栈属于每个线程私有的;堆和方法区属于线程共享访问的。1.1. PC计数器程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码行号指示器。当前线程所执行的字节码行号指示器。每个线程都有一个自己的PC计数器。线程私有的,生命周期与线程相同,随转载 2021-03-31 22:52:25 · 187 阅读 · 2 评论 -
Java进阶之计算机程序运行的基本原理
前言Java进阶中,计算机的基础知识能够更好的让我们了解Java底层运行的过程,比如Jvm的知识,TCP三次握手等。因此,此文简单的介绍有关计算机的基础知识(偏向于Java可能涉及到的)冯诺依曼式计算机存储程序式计算机也称为冯诺依曼式计算机1.组成分为五个部分,它们之间以总线相连通过执行一个简单相加指令举例:举例:存储器中一条命令,假设这条命令执行这样一条动作,ADD 123 321,ADD表示要做的事情(相加),后面是参数相加动作的两个数,(1)通过命令记录员找到当前执行到的命令,转载 2021-03-30 22:19:24 · 387 阅读 · 0 评论 -
Java进阶之计算机组成原理概述
1.计算机的发展简史1.1 计算机发展的四个阶段自从1945年至今,计算机经历了电子管计算机,晶体管计算机,集成电路计算机以及超大规模集成电路计算机。电子管计算机(1945年-1957年)第二次世界大战是电子管计算机产生的催化剂,而最著名的电子管计算机是来自美国的埃尼阿克(ENIAC),这一时期的计算机有如下特点集成度小,占用空间大功耗高,运行速度慢操作复杂,更换程序需要接线晶体管计算机(1957年-1964年)1948年,贝尔实验室的三个科学家发明了晶体管,相比电子管而言,晶转载 2021-03-30 21:40:44 · 394 阅读 · 0 评论 -
JVM(一) - 认识虚拟机
一、什么是虚拟机(JVM)JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的(可以简单理解为:在内存划一块区域,通过模拟计算机的各种功能)。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上一次编译,多次运行,具有跨平台性。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。Java虚拟机包括一套字节码指令集、一组寄存原创 2021-02-09 23:11:53 · 210 阅读 · 2 评论 -
Oracle-字符集之中文乱码分析
dd原创 2021-01-01 00:38:37 · 1468 阅读 · 0 评论 -
Oracle11g数据库导入Oracle10g数据库
https://blog.youkuaiyun.com/defonds/article/details/4263137?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4不用用户设置参数https://www.cnblogs.com/hllnj2008/p/5105908.html原创 2020-05-19 13:55:40 · 204 阅读 · 0 评论 -
MySQL 索引优化深入
创建test表(测试表) drop table if exists test; create table test( id int primary key auto_increment, c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10) ) ENGINE=INNODB default ...原创 2018-10-18 14:34:21 · 185 阅读 · 0 评论 -
Mysql的explain详解
Explainx详解Explainx详解使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈 下面是使用 explain 的例子: 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包...原创 2018-10-18 10:57:04 · 470 阅读 · 0 评论 -
深入理解Mysql索引底层数据结构与算法
索引索引是帮助MySQL高效获取数据的排好序的数据结构(容易忽略的点:排好序)(形象点就是教科书的目录)索引存储在文件里(也就是说有IO操作)索引结构:这里说说在几种数据结构中,mysql为什么选择hash,B+Tree二叉树 红黑树 hash BTree首先,如果数据没有索引,那么我们读取数据是这样的这里有一篇很好的硬盘存取原理文章,看完更容易理解:http...原创 2018-10-14 20:09:44 · 13722 阅读 · 3 评论 -
MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略...转载 2018-10-18 11:08:47 · 193 阅读 · 0 评论 -
MySQL优化(转载)
MySQL查询过程当向MySQL发送一个请求的时候,MySQL到底做了些什么呢? 标题MySQL查询过程(引用:https://www.cnblogs.com/liujiacai/p/7605612.html)客户端/服务端通信协议MySQL客户端/服务端通信协议是“半双工”的:在任一时刻,要么是服务器向客户端发送数据,要么是客户端向服务器发送数据,这两个动作不能同时发生。一旦...转载 2018-10-18 11:07:50 · 218 阅读 · 0 评论 -
Nginx 之生产环境应用
通过nginx高速缓存来演示在这之前可以了解$host变量的含义 http://blog.51cto.com/gyj110/2079981案例分析某电商平台商品详情页需要实现 700+ QPS(query操作,TPS提交操作),如何着手去做?1. 首先为分析一下一个商品详情页有哪些信息从中得出 商品详情页依懒了对于商品详情页涉及了如下主要服务:这么多数据不可能一起一...原创 2018-10-13 18:26:36 · 1933 阅读 · 0 评论 -
Nginx 负载均衡演示之 upstream 参数 & location 参数
upstream 参数nginx关于upstream参数官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.htmlupstream 参数 参数 描述 service 反向服务地址 加端口 weight 权...原创 2018-10-14 01:29:58 · 138291 阅读 · 4 评论 -
Nginx 负载均衡演示
Nginx 负载均衡一、准备两个web解压tomcat7压缩包或复制 tomcat7 到 /root/svr/server 目录(你自己想要的路径,这里我之前已经解压,所以用复制)cp -r apache-tomcat-7.0.91 /root/svr/servers当前目录在复制一份,并且改名cp -r apache-tomcat-7.0.91 web2mv apa...原创 2018-10-10 17:12:02 · 269 阅读 · 0 评论 -
Linux 安装 Nginx
NginxNginx(engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强负载均衡 & 反向代理 (产生两次请求)?Nginx安装 (Linux cento...原创 2018-10-10 17:14:29 · 272 阅读 · 0 评论