随笔分类 -  Web服务器深度调优

1 2 3 下一页
多线程设计模式之Future模式
摘要:在JDK中实现线程同步等待闭环(FutureTask/Future)中已经涉及到了Future模式,相对与多线程设计模式之Worker Thread模式有何异同呢?在多线程设计模式之Worker Thread模式中client和worker之间没有任何直接联系,即worker执行的结果client是 阅读全文
posted @ 2024-06-20 10:23 池塘里洗澡的鸭子 阅读(28) 评论(0) 推荐(0)
多线程设计模式之Worker Thread模式
摘要:以前用C/C++写进程池,要么一下子fork最大进程数,要么来一个任务fork一个进程。多线程也可以这样设计,并总结这种模式为Worker Thread模式。 类图如下: 具体实现参考如下代码(一次性开启足够多的线程): 1)Request Request角色表示工作。Request角色中保存了工作 阅读全文
posted @ 2024-06-19 12:31 池塘里洗澡的鸭子 阅读(50) 评论(0) 推荐(0)
JVM GC日志分析之日志参数
摘要:不同的垃圾收集器(参考JVM 垃圾收集器分类),输出的日志格式各不相同,但也有一些相同的特征。熟悉各个常用垃圾收集器的GC日志,是进行JVM调优的必备一步。 解析GC日志,首先需要收集日志(参考https://docs.oracle.com/en/java/javase/17/docs/specs/ 阅读全文
posted @ 2024-05-30 15:41 池塘里洗澡的鸭子 阅读(329) 评论(0) 推荐(0)
JVM 垃圾收集器分类
摘要:参考官网https://docs.oracle.com/en/java/javase/17/gctuning/introduction-garbage-collection-tuning.html。垃圾收集器可以分为以下四类: 1、Serial收集器 这个收集器是一个单线程工作的收集器, 但它的“单 阅读全文
posted @ 2024-05-29 13:26 池塘里洗澡的鸭子 阅读(41) 评论(0) 推荐(0)
JVM调优维护常用工具之VisualVM 可视化优化工具
摘要:VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于Java 技术的应用程序(Java 应用程序)的详细信息。VisualVM 对 Java Development Kit (JDK) 工具所检索的 JV 阅读全文
posted @ 2024-05-28 20:42 池塘里洗澡的鸭子 阅读(176) 评论(0) 推荐(0)
JVM调优维护常用工具之Jconsole 监控管理
摘要:Jconsole(Java Monitoring and Management Console)是JDK中自带的java监控和管理控制台,用于对JVM中内存、线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。 jconsole使用jvm的 阅读全文
posted @ 2024-05-28 16:20 池塘里洗澡的鸭子 阅读(125) 评论(0) 推荐(0)
JVM非运行时共享内存之直接内存
摘要:直接内存(Direct Memory) 并不是虚拟机运行时数据区的一部分。为何存在呢?观察下两图进行对比: 有没有似曾相识?!很多架构的设计都基于这种思想,提高性能和效率。NIO的Buffer提供一个可以直接访问系统物理内存的类——DirectBuffer。 普通的ByteBuffer仍在JVM堆上 阅读全文
posted @ 2024-05-15 15:35 池塘里洗澡的鸭子 阅读(20) 评论(0) 推荐(0)
JVM运行时内存管理之线程共享
摘要:接上JVM运行时内存管理之线程私有继续分享JVM运行时内存管理中线程共享部分: 一、堆 对于Java应用程序来说, Java堆(Java Heap) 是虚拟机所管理的内存中最大的一块。 Java堆是被所 有线程共享的一块内存区域, 在虚拟机启动时创建。 此内存区域的唯一目的就是存放对象实例, Jav 阅读全文
posted @ 2024-05-15 14:57 池塘里洗澡的鸭子 阅读(101) 评论(0) 推荐(0)
JVM运行时内存管理之线程私有(生命周期和线程相同)
摘要:在JVM初识中提到之所以在程序和操作系统之间增加JVM,就是JVM有些内存管理的特性直接在操作系统上实现有些费劲。那么JVM的内存管理是怎样的呢?其中内存部分分运行时数据区和非运行时数据区,即虚拟机的内存结构。具体可参考下图: 其中线程私有的:1)程序计数器 2)虚拟机栈 3)本地方法栈 线程共享的 阅读全文
posted @ 2024-05-15 10:06 池塘里洗澡的鸭子 阅读(87) 评论(0) 推荐(0)
JVM加载机制之自定义加类加载器
摘要:在JVM类加载器分类中提及JVM自带的加载器无法满足实际业务需求时,可以自定义加载器。那一般什么情况下需要自定义加载器呢? 隔离加载类:模块隔离——把类加载到不同的应用选项中,比如Tomcat类加载器。 修改类加载方式:平台提供了三类加载器除必须加载的类加载器,可以根据实际情况按需动态加载。 扩展加 阅读全文
posted @ 2024-05-13 15:05 池塘里洗澡的鸭子 阅读(38) 评论(0) 推荐(0)
JVM加载机制之类加载器ClassLoader源码剖析
摘要:在JVM类加载器分类中通过ClassLoader获取了不同类型的类加载器,它是如此之重要那么ClassLoader究竟为何物呢?通过源码分析(以jdk17示例): 调试跟踪ClassLoader: loadclass->findclass->defineclass-addclass。 关于loadc 阅读全文
posted @ 2024-05-11 15:03 池塘里洗澡的鸭子 阅读(28) 评论(0) 推荐(0)
JVM加载机制之类加载器的执行过程
摘要:在 JVM类加载器分类对类加载器的角色有了了解,那么类加载器的执行过程如何呢?实际类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initiallizat 阅读全文
posted @ 2024-05-11 10:45 池塘里洗澡的鸭子 阅读(78) 评论(0) 推荐(0)
JVM加载机制之类加载器分类
摘要:Java应用程序运行大致如下过程: 上图清晰地展示了类加载的作用:Java类(.java)—> 字节码⽂件(.class) —> 字节码⽂件需要被加载到jvm内存当中(这个过程就是⼀个 类加载的过程)。这各过程中就有⼀个⾮常重要的⻆⾊叫做类加载器(ClassLoader)。 通过vm配置选项可以观察 阅读全文
posted @ 2024-05-07 11:22 池塘里洗澡的鸭子 阅读(32) 评论(0) 推荐(0)
Nginx核心配置文件nginx.conf
摘要:Nginx配置文件在目录/usr/local/nginx/conf下的nginx.conf,具体分三部分内容,如下: 1、整体全局块: 2、enents部分: 上述图中配置表示每个workderprocess支持的最大连接数为1024。所以该部分主要影响nginx服务器与用户的网络连接。 3、htt 阅读全文
posted @ 2024-04-26 19:57 池塘里洗澡的鸭子 阅读(21) 评论(0) 推荐(0)
Tomcat生命周期管理
摘要:一、生命周期统一接口Lifecycle: 在自定义Mini-Tomcat之动态资源访问实现中已分析tomcat的两个功能,通过server.xml配置可以进行设置。下面看看Tomcat的实际的server.xml配置: 从配置结构看,Tomcat内部架构中各个核心组件是包含于被包含的关系,往下层层包 阅读全文
posted @ 2024-04-25 15:37 池塘里洗澡的鸭子 阅读(20) 评论(0) 推荐(0)
Tomcat源码构建
摘要:前三篇文章完成了一个类tomcat功能的Mini-Tomcat,本文下载源码进行构建便于后续探讨Tomcat自身调优。 1、下载源码(版本10.1.19)。 2、在apache-tomcat-10.1.19-src下新建pom.xml文件,添加编译所需依赖(不同版本依赖有区别,具体情况具体分析解决) 阅读全文
posted @ 2024-04-24 20:21 池塘里洗澡的鸭子 阅读(32) 评论(0) 推荐(0)
自定义Mini-Tomcat之动态资源访问实现
摘要:在自定义Mini-Tomcat之基本架构V3需求中实现了访问动态资源,该实现案例中的动态资源通过两个配置文件获取: server.xml: web.xml: 下面是对这俩配置文件的解析保存数据: 上述两行中,第一行解析保存Server/Servlet数据: 通过Mini-Tomcat静态和动态资源访 阅读全文
posted @ 2024-04-23 19:44 池塘里洗澡的鸭子 阅读(28) 评论(0) 推荐(0)
自定义Mini-Tomcat之静态资源访问实现
摘要:在自定义Mini-Tomcat之基本架构V2需求中实现了访问静态页面,具体实现如下: 通过上述UML图分析可知Request请求的功能就是通过inputStream中数据分析获取method和url信息。获取静态页面并返回的操作在Response中: 访问:http://localhost:8080 阅读全文
posted @ 2024-04-23 15:58 池塘里洗澡的鸭子 阅读(12) 评论(0) 推荐(0)
自定义Mini-Tomcat之基本架构
摘要:在Spring+ / Spring MVC中使用到了Tomcat。那么Tomcat提供什么功能呢?访问使用HTTP协议,所以它首先是一个HTTP服务器(关于HTTP协议资料较多自行查找);其次MVC提供servlet部署在tomcat中进行实际的业务操作,所以它还是一个Servlet容器。 下面定义 阅读全文
posted @ 2024-04-23 14:54 池塘里洗澡的鸭子 阅读(22) 评论(0) 推荐(0)
线程之间数据共享实践
摘要:在JVM运行时内存管理之线程共享中已经分享了线程共享内存三部分:堆、metaspace、常量池。那怎么验证数据共享在这些区域呢?通过以下几种方式进行处理: 1、将数据抽象成一个类,并将数据的操作作为这个类的方法,只要在方法上加” synchronized“数据访问即可(参考Java线程间通讯——等待 阅读全文
posted @ 2021-12-31 10:13 池塘里洗澡的鸭子 阅读(501) 评论(0) 推荐(0)

1 2 3 下一页