Java应用Tomcat执行过程之性能调优

Tomcat思维导图简单介绍 介绍,重要目录,Web工程发布目录结构,安装,配置,启动等等 立即下载

     Java应用Tomcat执行过程之性能调优(整理两天时间、转载请注出处)


1、简介

     Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。
     Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
     Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。


2、Tomcat的执行过程


ps:画图好丑(画图工具画的,Do not worry);

请求过程描述:

      1、用户发送请求,被转发到8080端口,被Coyote Http/1.1 Connector获取。

      2、Connector把请求交给service的Engine来处理,并等待engine的回应。

            2.1、Engine获取到请求localhost/index.jsp,匹配所有的虚拟主机Host。

            2.2、Engine匹配到名localhost的Host,匹配它所有的Context。

            2.3、path=“/”的context获得请求/index.jsp,在它所拥有的mapping table中寻找对应的servlet。context匹配到URLPATHERN为*.jsp的servlet,对应的JSPServlet类。

            2.4、构造HttpServletRequest对象和HttpServletResponse对象。作为参数调用JspServlet的doGet()或者doPost()方法执行业务逻辑。

            2.5、Context把执行完的HttpServletRequest对象和HttpServletResponse对象返回给Host。

            2.6、Host把HttpServletResponse对象返回给Engine。

      3、Engine把HttpServletResponse对象返回给Connector。

      4、Connector把HttpServletResponse对象返回给客户。



 

2、目录结构与配置

2.1、目录结构

bin 存放启动和关闭tomcat脚本 
conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml 
work 存放jsp编译后产生的class文件 
webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录 
logs 存放日志文件 
lib/japser/common 这三个目录主要存放tomcat所需的jar文件



2.2、Server.xml配置详解

  • 顶级组件:位于整个配置的顶层,如server。
  • 容器类组件:可以包含其它组件的组件,如service、engine、host、context。
  • 连接器组件:连接用户请求至tomcat,如connector。
  • 被嵌套类组件:位于一个容器当中,不能包含其他组件,如Valve、logger。

<server>
     <service>
     <connector/>
     <engine>
     <host>
     <context></context>
     </host>
     <host>
     <context></context>
     </host>
     </engine>
     </service>
</server>

 

2.3、组件详解

  • engine:核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。
  • host:类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机。
  • context:定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外的属性,如部署方式等。
  • connector:接收用户请求,类似于httpd的listen配置监听端口的。
  • service(服务):将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine。service内部有两个connector,一个engine。因此,一般情况下一个server内部只有一个service,一个service内部只有一个engine,但一个service内部可以有多个connector。
  • server:表示一个运行于JVM中的tomcat实例。
  • Valve:阀门,拦截请求并在将其转至对应的webapp前进行某种处理操作,可以用于任何容器中,比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)。
  • logger:日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中。
  • realm:可以用于任意容器类的组件中,关联一个用户认证库,实现认证和授权。可以关联的认证库有两种:UserDatabaseRealm、MemoryRealm和JDBCRealm。
  • UserDatabaseRealm:使用JNDI自定义的用户认证库。
  • MemoryRealm:认证信息定义在tomcat-users.xml中。
  • JDBCRealm:认证信息定义在数据库中,并通过JDBC连接至数据库中查找认证用户。


2.4、server.xml文件注释解析

<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
 
-->
<!-- 
	 这会让Tomcat启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令,
	 使用 telnet 连接8005 端口可以直接执行 SHUTDOWN 命令来关闭 Tomcat。各Server的定义
	 不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它
	 们使用不同的端口。这个端口的定义用于为管理员提供一个关闭此实例的便捷途径,因此,
	 管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,
	 这通常不允许远程进行。
 -->
<Server port="8005" shutdown="SHUTDOWN">
  <!--
	<Server>元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含
	一个<Service>元素.并且它不能做为任何元素的子元素.
    port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出
	shutdown命令.该属性是必须的.
    shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
  -->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
	<!--	 
	<Connector>连接器:Tomcat 连接器必须实现 org.apache.catalina.Connector 接口。
	在这个接口的众多方法中,最重要的是 getContainer,setContainer, createRequest 和 createResponse。

		setContainer 是用来关联连接器和容器用的 。 getContainer 返回关联的容器 。
		createRequest 为前来的 HTTP 请求构造一个请求对象,而 createResponse 创建一个响应对象。
				 
	 一般说来,常见于server.xml中的连接器类型通常有4种:
	1) HTTP连接器 
	2) SSL连接器 
	3) AJP 1.3连接器 
	4) proxy连接器

	定义连接器时可以配置的属性非常多,但通常定义HTTP连接器时必须定义的属性只有“port“,
	定义AJP连接器时必须定义的属性只有”protocol”,因为默认的协议为HTTP。以下为常用属性
	的说明:

    connector的属性:接收用户请求,类似于httpd的listen配置监听端口。
        port指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
        address:指定连接器监听的地址,默认为所有地址(即0.0.0.0)。
        protocol连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
        minProcessors服务器启动时创建的处理请求的线程数。
        maxProcessors最大可以创建的处理请求的线程数。
        enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。
        redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
        acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
        connectionTimeout指定超时的时间数(以毫秒为单位)。
	-->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
	<!--
	Engine是Servlet处理器的一个实例,即servlet引擎,默认为定义在server核心容器组件,catalina引擎,
	负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机hostdefaultHost指定缺省的处
	理请求的主机名,它至少与其中的一个host元素的name属性值是一样的。
	
	Engine是Servlet处理器的一个实例,即servlet引擎,默认为定义在server.xml中的Catalina。
	Engine需要defaultHost属性来为其定义一个接收所有发往非明确定义虚拟主机的请求的host组件。
	
	defaultHost:Tomcat支持基于FQDN的虚拟主机,这些虚拟主机可以通过在Engine容器中定义多个不同的
		Host组件来实现;但如果此引擎的连接器收到一个发往非非明确定义虚拟主机的请求时则需要将此请求发
		往一个默认的虚拟主机进行处理,因此,在Engine中定义的多个虚拟主机的主机名称中至少要有一个
		跟defaultHost定义的主机名称同名;
	name:Engine组件的名称,用于日志和错误信息记录时区别不同的引擎;
	Engine容器中可以包含Realm、Host、Listener和Valve子容器。
    -->
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
		<!--
		一个Realm表示一个安全上下文,它是一个授权访问某个给定Context的用户列表和某用户
		所允许切换的角色相关定义的列表。因此,Realm就像是一个用户和组相关的数据库。
		定义Realm时惟一必须要提供的属性是classname,它是Realm的多个不同实现,用于表示
		此Realm认证的用户及角色等认证信息的存放位置。
		-->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  resourceName="UserDatabase"/>
      </Realm>
	  <!--
		位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机;
		1) appBase:此Host的webapps目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径;
			可以使用基于$CATALINA_HOME的相对路径;
		2) autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;
			默认为true;
		3) unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;
	  -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
		<!--
        Context表示一个web应用程序,通常为WAR文件
            docBase应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。
            path表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
            reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序
        -->
		<Context path="" docBase="" debug=""/>
		
		<!--	 
		Valve类似于过滤器,它可以工作于Engine和Host/Context之间、Host和Context之间以及Context
		和Web应用程序的某资源之间。一个容器内可以建立多个Valve,而且Valve定义的次序也决定了它
		们生效的次序。Tomcat6中实现了多种不同的Valve:

		AccessLogValve:访问日志Valve
		ExtendedAccessValve:扩展功能的访问日志Valve
		JDBCAccessLogValve:通过JDBC将访问日志信息发送到数据库中;
		RequestDumperValve:请求转储Valve;
		RemoteAddrValve:基于远程地址的访问控制;
		RemoteHostValve:基于远程主机名称的访问控制;
		SemaphoreValve:用于控制Tomcat主机上任何容器上的并发访问数量;
		JvmRouteBinderValve:在配置多个Tomcat为以Apache通过mod_proxy或mod_jk作为前端的集群架构中,当期望停止某节点时,可以通过此Valve将用记请求定向至备用节点;使用此Valve,必须使JvmRouteSessionIDBinderListener;
		ReplicationValve:专用于Tomcat集群架构中,可以在某个请求的session信息发生更改时触发session数据在各节点间进行复制;
		SingleSignOn:将两个或多个需要对用户进行认证webapp在认证用户时连接在一起,即一次认证即可访问所有连接在一起的webapp;
		ClusterSingleSingOn:对SingleSignOn的扩展,专用于Tomcat集群当中,需要结合ClusterSingleSignOnListener进行工作;
			 -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>



3、Tomcat监控

        JConsole的图形用户界面是一个符合java管理扩展(JMX)规范的监测工具,JConsole使用java虚拟机(java VM),提供在Java平台上运行的应用程序的性能和资源消耗的信息。在jdk安装目录下的bin文件包下;



4、Tomcat安全优化和性能优化

4.1、禁用DNS查询(enableLookups="false")

      当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名 转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。

      修改server.xml文件中的Connector元素,修改属性enableLookups参数值: enableLookups="false",如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。

<Connector  port="8081" protocol="HTTP/1.1"
               connectionTimeout="6000" enableLookups="false" acceptCount="800"
               redirectPort="8443" />


4.2、jvm调优

优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码:

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"

server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:初始堆内存heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss:每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间














5、参考文献

      Tomcat与java web 开发技术详解-孙卫琴-第二版
      深入剖析Tomcat(How Tomcat Works)



Web第一个Servlet程序(生命周期、执行流程、tomcat) web项目:第一个Servlet程序 Servlet的生命周期:init--service--destroy、执行流程:构造器--init方法--循环[ service方法 ]--destory方法(正常关闭Tomcat)、启动tomcat测试 立即下载

相关推荐

基于matlab版本的三维直流电法反演算法

可以使用RESINVM3D工具包等现成的MATLAB工具进行三维直流电法反演。反演问题求解:基于MATLAB的反演问题求解算法实现和应用,包括反演问题数值模拟、反演问题参数优化和反演问题结果分析。希望这个代码示例能帮助你入门三维直流电法反演。如果有更具体的需求或问题,可以进一步探讨。反演过程中可能需要调整正则化参数和优化算法的设置。需要根据实际问题实现,可能涉及复杂的数值计算。

ytttr873的博客 671

tomcat部署,mysql数据库自生成时间正常,但java对象传递保存的时间多8小时问题解决方案

能后上午搜索了下,发现也有网友遇到过相似的问题,他给出的解决方案是 当然我会给出解诀方案: 方法一: JVM运行时增加参数,指定时区-D user.timezone=GMT+08 方法二:直接在程序中设置时区。System.setProperty("user timezone'","GMT +08"); 方法三:直接加上28800就好了(8hours*60min*60sec=28800) 照着这位网友的思路。和搜索相关操作步骤,在tomcat 启动的时候,设置个默认时区方法是在catalina.sh..

gplzx110的专栏 1204

金仓数据库KCM认证考试介绍【2025年4月更新】

金仓数据库认证资深专家KCM认证考试介绍

qq709869231的博客 3238

tomcat缺少awt支持的解决

这几天,上面的项目出现了一个问题,就是二维码图片没有出来,考虑到图像都是用到awt库,可能是tomcat没有图像库的问题,给tomcat加上awt的支持就解决了。如何加在catalina.sh的开头的JAVA_OPTS环境变量中加入-Djava.awt.headless=true就搞定了(加后如:JAVA_OPTS="-server -Xms512m -Xmx1024m  -XX:MaxNewSi

lilovfly的专栏 2564

Unity URP管线下的Highlight Plus插件,从导入到实现物体高亮的保姆级避坑指南

本文详细解析了在Unity URP管线中使用Highlight Plus插件实现物体高亮的完整流程与常见问题解决方案。从URP环境配置、插件导入避坑到相机设置优化,提供了一套完整的保姆级指南,帮助开发者高效解决高亮效果不显示等典型问题,并包含移动端性能优化与复杂场景管理的高级技巧。

weixin_27379781的博客 408

KV Cache 详解:新手也能理解的 LLM 推理加速技巧

(Autoregressive)生成的,即每次生成一个 token,然后将其作为输入继续生成下一个 token。:如果序列太长,超过了 KV Cache 的存储限制,就需要丢弃最早的 tokens(类似滑动窗口)。时,每次只会生成一个新 token,然后再把这个 token 作为输入继续生成下一个 token。,只缓存计算过的 K,VK, V,每次只计算新 token 的 K,VK, V,从而提升推理效率。:如果输入的 prompt 发生变化,之前的 KV Cache 不能复用,必须重新计算。

Harry的博客 7379

apache-tomcat-9.0.19 配置unpackWARs="false"导致spring注入失败问题记录

运行环境: OS:window7旗舰版 Service Pack1 server : apache-tomcat-9.0.19 JDK:1.8.0_221Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) 问题描述: 在myeclipse使用maven-3.6.3将项目打成war后放在tomcat下...

lixiufei_1028的博客 3046

保姆级教程:在RK3576上配置USB网卡从零到外网访问(附udev规则详解)

本文提供了在RK3576开发板上配置USB网卡的完整教程,涵盖从内核驱动、udev规则到网络路由的全流程。重点讲解了如何利用USB Gadget功能实现高速网络连接,并构建稳定的算力集群,确保多设备间通信及外网访问。

grass的博客 461

如何设置Tomcat不自动解压war包

打开conf目录下的server.xml,找到如下配置 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 将unpackWARs设置为false,代表不自动解压 另外,autoDeploy代表不用重启Tomcat服务器自动部署(热部署) ...

qq_38078190的博客 2166

Python时间序列:PaddleTS-时间序列分类

评估的指标采用F1,Precision,Recall,PaddleTS已经基于TSDataset实现了这三个指标的计算,直接调用即可。使用内置的API:get_dataset加载BasicMotions数据集。模型训练完成之后,可以对测试集进行预测并评估。模型保存之后,可以加载模型用于新的数据预测。可以将训练完成的模型保存到指定路径。概率预测 可以返回每个分类的概率。安装paddlets。

斌擎科技 1294

Android16 RK3576修改亮度调节为线性调节

文章摘要: 本文分析了Android系统中亮度调节的非线性问题,并提供了线性化改造方案。首先通过追踪Settings和SystemUI代码,发现亮度调节使用了BrightnessUtils类中的非线性Gamma空间转换算法。然后重点修改了BrightnessUtils类,将原有的Hybrid Log Gamma(HLG)算法替换为简单的线性映射公式。最后在自定义工具窗口中实现了基于系统标准接口的亮度调节功能,通过SeekBar的0-100%百分比值线性映射到1-255的系统亮度值。改造后的亮度调节更加直观,

tzj1058756809的博客 76

tomcat配置文件详解

1.Server.xml 删除了不重要的部分 <?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <!-- 一个“service”是一个或多个共享的“connector”的集合 注:“service”本身不是“Container”, 因此,您可能无...

P19777的博客 813

2021年03月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。现在从m位中删除k位(0

人生就是一个不断学习的过程 1013

Tomcat 性能调优思路

Tomcat 性能调优是一个系统性的工程,需要从硬件资源、操作系统配置、Tomcat 本身的设置、JVM 参数、应用程序优化以及持续的监控与分析等多个层面入手。通过综合运用上述调优思路,结合实际业务需求和应用场景,能够显著提升 Tomcat 的性能和稳定性,确保应用在高并发和大流量环境下依然高效运行。在性能调优过程中,建议采用循序渐进的方法,逐步调整和测试每一项参数,避免一次性大规模修改导致不可预期的问题。同时,保持良好的监控和日志记录习惯,有助于及时发现和解决性能瓶颈,提升整体系统的可靠性和用户体验。

GDL_MPY的博客 2546

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Tomcat性能调优

由于Web应用程序跑在Tomcat工作线程,因此Web应用对请求的处理时间也直接影响Tomcat性能,而Tomcat和Web应用在运行过程中所用到的资源都来自os,因此调优需要将服务端看作是一个整体来考虑。 I/O调优指选择NIO、NIO.2还是APR 线程池调优指的是给Tomcat的线程池设置合适的参数,使得Tomcat能够又快又好地处理请求 I/O模型 I/O调优实际上是连接器类型的选择,一般情况下默认都是NIO,在绝大多数情况下都是够用的。 APR 除非你的Web应用用到了TLS加密传输,而且对性

JavaEdge全是干货的技术号 2953

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Tomcat性能调优指南

tomcat调优

810cheng 1482

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Tomcat 和 JVM 的性能调优总结

Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容。对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建的线程数的设置,当然还有其他一些性能调优的设置,下图是我根据我机子的性能设置的一些参数值,给各位详细解释一下吧: 1、URIEncoding="UTF-8" :设...

不受天磨非好汉,不遭人妒是庸才——着实着迷゛ 3485

Tomcat和JVM的性能调优你都懂吗?

持久代一般固定大小为64m。我们都知道Java虚拟机都有默认的垃圾回收机制,但是不同的垃圾回收机制的效率是不同的,正是因为这点我们才经常对Java虚拟机的垃圾回收策略进行相应的调整。1、 -XX:+UseSerialGC :代表垃圾回收策略为串行收集器,即在整个扫描和复制过程采用单线程的方式来进行,适用于单CPU、新生代空间较小及对暂停时间要求不是非常高的应用上,是client级别默认的GC方式,主要在JDK1.5之前的垃圾回收方式。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5。..

weixin_62421895的博客 687

Java 开发中 Tomcat 的 JVM 调优策略

本文旨在为 Java 开发者和系统管理员提供一套完整的 Tomcat JVM 调优方法论,涵盖从基础原理到实战部署的全流程。JVM 内存模型与 Tomcat 运行机制的关系垃圾回收算法的选择与参数配置性能监控工具的使用与日志分析高并发场景下的典型调优案例:Java 虚拟机,负责执行字节码并管理内存、线程等资源。Tomcat:开源 Web 容器,用于部署 Java Web 应用,基于 Servlet/JSP 规范。:垃圾回收,JVM 自动回收不再使用的内存对象的过程。堆内存(Heap)

Java大师兄的博客 720

tomcat调优

tomcat调优

liuyongqian2017的博客 1654

Tomcat性能调优方案

 Tomcat性能调优方案 一、操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。。 【适用场景】 任何项目。 二、Java虚拟机调优 应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改

清水雨潭 930
上一篇: ActiveMQ消息队列的集群安装及应用(二)
下一篇: Hadoop之旅(1)—单机与伪集群安装、简单经典案例
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值