分别复制tomcat目录下的 conf logs temp webapps work 这5个目录到 test1 和 test2下。
1、错误提示:java.lang.OutOfMemoryError: Java heap space
Apache Tomcat 是一个广泛使用的开源Java Servlet容器,但在使用过程中,有时可能会遇到Tomcat启动后立即退出的问题。本文将分析这个问题的常见原因,并提供解决方案,同时分享一些配置技巧和预防措施。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136303.html原文链接:https://javaforall.cn
此文章记录了我在VM虚拟机上安装tomcat,并部署webApp,因为我这个项目的是在windows server2003下运行的,所以自己没事研究一下如何部署到linux上面,我用的是 CentOS 6.8 ,附上下载地址
更改 web项目WEB-INF\resources下的Congfig.xml里的 <characterEncode>UTF-8</characterEncode> 更改jsp中编码格式为utf-8
由于Linux在服务器领域应用非常广泛,有很多开源和成熟的软件,目前大多数的应用后台都是部署在linux上的,熟悉Linux操作系统和相关命令,可以加深我们对软件的架构和运行机制的了解,也可以增加自己核心竞争力、拓宽自己的技能栈,从而获得更高的薪水。
Tomcat 的启动参数位于tomcat的安装目录\bin目录下,如果你是Linux操作系统就是catalina.sh文件,如果你是Windows操作系统那么你需要改动的就是catalina.bat文件。
系统负载能力浅析 互联网时代,高并发是一个老生常谈的话题。无论对于一个web站点还是app应用,高峰时能承载的并发请求都是衡量一个系统性能的关键标志。像阿里双十一顶住了上亿的峰值请求、订单也确实体现了阿里的技术水平(当然有钱也是一个原因)。 那么,何为系统负载能力?怎么衡量?相关因素有哪些?又如何优化呢? 一. 衡量指标 用什么来衡量一个系统的负载能力呢?有一个概念叫做每秒请求数(Requests per second),指的是每秒能够成功处理请求的数目。比如说,你可以配置tomcat服务器的maxCon
通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了。其中最大的一个问题就是Tomcat执行权限。普通方式配置的Tomcat是以root超级管理员的身份运行的,显然,这是非常危险的,可想而知,一但网站被挂马,您的整个服务器都可以被黑客控制了。而通过编译或在线(例如RedHat系列的yum, debian系列的apt-get)的方式安装,一个服务器上又只能装一个tomcat的服务,如果将多个网站放到同一个tomcat服务中,一但某一个网站出问题导致tomcat服务被卡死,则服务器上所有的网站都打不开了,无法满足各网站程序独享tomcat的需求。为了解决这些问题,我们需要配置Tomcat以指定的身份运行,且一台服务器上可以安装任意多个tomcat服务。
测试工程师的四大基础技能:数据库、linux、网络协议、测试工具,不管是刚入门还是已经工作多年,这几个方向都是要掌握的。今天我们再讲一下测试工程师必须要掌握的linux命令。
2) 下载新的CentOS-Base.repo 到/etc/yum.repos.d/
由于Web应用程序跑在Tomcat工作线程,因此Web应用对请求的处理时间也直接影响Tomcat性能,而Tomcat和Web应用在运行过程中所用到的资源都来自os,因此调优需要将服务端看作是一个整体来考虑。
要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。
注意:如下命令必须进入到Tomcat的bin目录才能执行。如果你配置好了环境变量就可以在任何路径下执行了。
[root@kakaka usr]# Java -version java version "1.6.0_38" Java(TM) SE Runtime Environment (build 1.6.0_38-b05) Java HotSpot(TM) Server VM (build 20.13-b02, mixed mode)
由于APR需要依赖几个模块,其中一个就是APR-util。所以我们得将APR依赖的模块给安装上。还是之前的下载页面,复制APR-util源码包的下载链接:
Tomcat调优是一个老话题,目的都是为了提高站点的吞吐和并发。这里面涉及到Tomcat本身参数的优化和JVM优化。近期在研究JVM的参数设置和Tomcat集群,所以进行了一下调优实践。需要说明的是:本文的配置肯定不是最好的,仅仅是一次实践和一次记录。步骤可以参考,但参数设置需要针对不同需求的项目来进行调整。 1、安装APR(Apache Portable Runtime) Tomcat 7 以后 Connector 默认启用 APR 协议,但是只有配置了 APR库才可以生效,否则还是会使用 BIO 或者N
Tomcat 优化分为系统优化,Java虚拟机调优,Tomcat本身的优化。
1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。
3.配置示例: JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’ 说明:其内存的配置需要根据服务器(或虚拟机)的实际内存来配置
转载自 http://blog.163.com/xueling1231989@126/blog/static/102640807201362223921799/ 因为内存溢出,要在TOMCAT/
Tomcat 安全配置与性能优化 摘要 我的系列文档 Netkiller Architect 手札Netkiller Developer 手札Netkiller PHP 手札Netkiller Python 手札Netkiller Testing 手札Netkiller Cryptography 手札Netkiller Linux 手札Netkiller Debian 手札Netkiller CentOS 手札Netkiller FreeBSD 手札Netkiller Shell 手札Netkiller S
默认端口为8080,可以通过在tomcat安装包conf目录下,service.xml中的Connector元素的port属性来修改端口。
本栏目Java开发岗高频面试题主要出自以下各技术栈:Java基础知识、集合容器、并发编程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL数据库、Redis缓存、RabbitMQ消息队列、Linux操作技巧等。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 你要开放的端口 -j ACCEPT
一. 衡量指标 用什么来衡量一个系统的负载能力呢?有一个概念叫做每秒请求数(Requests per second),指的是每秒能够成功处理请求的数目。比如说,你可以配置tomcat服务器的maxConnection为无限大,但是受限于服务器系统或者硬件限制,很多请求是不会在一定的时间内得到响应的,这并不作为一个成功的请求,其中成功得到响应的请求数即为每秒请求数,反应出系统的负载能力。 通常的,对于一个系统,增加并发用户数量时每秒请求数量也会增加。然而,我们最终会达到这样一个点,此时并发用户数量开始“压倒
在$CATALINA_HOME/conf/server.xml配置文件中的Connetctor节点,和连接数相关的参数配置和优化。
Linux系统中tomcat的启动参数 export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CM
http://blog.chopmoon.com/favorites/231.html
Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU 的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU 的处理能力越强,系统运行速度越快。
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443" URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="300" maxThreads="500" acceptCount="500" connectionTimeout="30000" enableLookups="false"/>
XWiki是一款基于java所编写的wiki,它可以运行在如Tomcat,Jetty,JBoss,WebLogic,WebSphere等Servlet容器上并利用关系型数据库(HSQL, MySQL等)来存储数据,大部分数据库产品都可以在XWiki上运行但是必须进行正确的设置。
解决方法:在Tomcat里的bin中的setclasspath.bat或者setclasspath.sh开头添加设置环境变量;
CentOS-6.4-minimal版中Apache-2.2.29与Tomcat-6.0.41实现集群 ---------------------------------------------------------------------------------------------------------------------- 本文建立在Apache-2.2.29与Tomcat-6.0.41实现负载均衡的基础上,实现过程详见 http://www.linuxidc.com/Linux/2014-09/107337.htm ---------------------------------------------------------------------------------------------------------------------- 几个术语 1)负载均衡 前端服务器(常常名为"负载均衡器","代理均衡器"或"反向代理")收到HTTP请求后,将请求分发到后端的不止一个"worker"的web服务器,由它们实际处理请求 2)会话复制 会话复制(即常说的Session共享)是一种机制,将客户端会话的整个状态原原本本复制到集群中的两个或多个服务器实例,以实现容错和故障切换功能 3)集群 集群由两个或多个Web服务器实例组成,这些服务器实例步调一致地工作,透明地处理客户端请求,客户端将一组服务器实例认为是单一实体服务 ---------------------------------------------------------------------------------------------------------------------- 几个区别 1)集群有别于分布式的解决方案,它采用的是每台服务器运行相同应用的策略,由负责均衡的服务器进行分流,这可以提高整个系统的并发量及吞吐量 2)由于集群服务需要在处理请求之间不断地进行会话复制,复制后的会话将会慢慢变得庞大,因此它的资源占用率是非常高的 如果在并发量大的应用中,复制的会话大小会变得相当大,而使用的总内存更是会迅速升高 3)集群的会话复制,增加了系统的高可用性,由于在每台服务器都保存有用户的Session信息 如果服务器群中某台宕机,应用可以自动切换到其它服务器上继续运行,而用户的信息不会丢失,这提高了应用的冗错性 4)实践证明,在各应用服务器之间不需要状态复制的情况下,负载均衡可以达到性能的线性增长及更高的并发需求 ---------------------------------------------------------------------------------------------------------------------- 配置集群的Tomcat实例的名称 这里jvmRoute属性值要与workers.properties中设置的节点名相同,该值将做为后缀添加在每个由该结点生成的jsessionid后面 而mod_jk正是根据jsessionid后面的后缀来确定一个请求应由哪一个结点来处理,这也是实现session_sticky的基本保证 [root@CentOS64 app]# vi /app/tomcat1/conf/server.xml (为<Engine/>节点增加jvmRoute属性,属性值为tomcat1) [root@CentOS64 app]# vi /app/tomcat2/conf/server.xml (为<Engine/>节点增加jvmRoute属性,属性值为tomcat2) [root@CentOS64 app]# vi /app/tomcat3/conf/server.xml (为<Engine/>节点增加jvmRoute属性,属性值为tomcat3) ---------------------------------------------------------------------------------------------------------------------- 配置集群参数 0)如果tomcat是放在不同机器上面的 那么直接取消注释tomcat/conf/server.xml中的<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>即可 1)如果tomcat是放在同一机器上面的(参考http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html) 此时就要修改<Cluster/>节点的默认配置,其默认配置如下 <Cluster className="org.apache.catalina.
例如Desktop Manager,Another,Web版可以选择Redis Insight。
根据维基百科介绍,web服务器是“通过HTTP协议处理web请求的计算机系统”(a computer system that processes requests via HTTP)。这个词可以指代整个系统,也可以指代可接收和管理HTTP请求的的程序。本文中介绍的web服务器指的是为终端用户处理web请求的程序。
考虑一下这种场景,你开发了一个应用,它有十分优秀的布局设计,最新的特性以及其它的优秀特点。但是在性能这方面欠缺,不管这个应用如何都会遭到客户拒绝。客户总是期望它们的应用应该有更好的性能。如果你在产品中使用了Tomcat服务器,那么这篇文章就会给你几方面来提升Tomcat服务器的性能。感谢ITWorld article给本文提供资源。经过沉思我已经知道了和早期版本相比最新的Tomcat提供更好的性能和稳定性。所以一直使用最新的Tomcat版本。现在本文使用下面几步来提高Tomcat服务器的性能。 增加JVM堆内存大小 修复JRE内存泄漏 线程池设置 压缩 数据库性能调优 Tomcat本地库 其它选项 第一步 – 提高JVM栈内存Increase JVM heap memory 你使用过tomcat的话,简单的说就是“内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过配置TOmcat的配置文件(Windows 下的catalina.bat或Linux下的catalina.sh)可以解决这种问题.这种解决方法是通过增加JVM的栈内存实现的.也就是说,JVM通常不去调用垃圾回收器,所以服务器可以更多关注处理web请求,并要求尽快完成。要更改文件(catalina.sh) 位于"\tomcat server folder\bin\catalina.sh",下面,给出这个文件的配置信息, [plain] view plain copy 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 -XX:+DisableExplicitGC" -Xms – 指定初始化时化的栈内存 -Xms – 指定初始化时化的栈内存 -Xmx – 指定最大栈内存 在重启你的Tomcat服务器之后,这些配置的更改才会有效。下面将介绍如何处理JRE内存泄漏. 第二步 – 解决JRE内存泄露 性能表现不佳的另一个主要原因是内存泄漏,正如我之前说过:始终使用最新的tomcat服务器以获得更好的性能和可伸缩性。现在,这句话变成真的。如果我们使用最新的tomcat版本6.0.26及以上就可以解决这个错误,因为它包含了一个监听器来处理JRE和PermGen的内存泄漏。使用的监听器是, [html] view plain copy <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 你可以在server.xml文件中找到这个监听器的配置,server.xml位置在“tomcat project folder/conf/server.xml”。接下来,我们将看看如何调整连接属性“maxThreads”。 第三步 – 线程池设置 线程池指定Web请求负载的数量,因此,为获得更好的性能这部分应小心处理。可以通过调整连接器属性“maxThreads”完成设置。maxThreads的值应该根据流量的大小,如果值过低,将有没有足够的线程来处理所有的请求,请求将进入等待状态,只有当一个的处理线程释放后才被处理;如果设置的太大,Tomcat的启动将花费更多时间。因此它取决于我们给maxThreads设置一个正确的值。 [html] view plain copy <Connector port="8080" address="localhost" 2 maxThreads="250" maxHttpHeaderSize="8192" 3 emptySessionPath="true" protocol="HTTP/1.1" 4 enableLookups="false" redirectPort="8181" acceptCount="100" 5 connectionTimeout="20000" disableUploadTimeout="true" /> 在上述配置中,maxThreads值设定为“250”,这指定可以由服务器处理的并发请求的最大数量。如果没有指定,这个属性的默认值为“200”。任何多出的并发请求将收到“拒绝连接”的错误提示,直到另一个处理请求进程被释放。错误看起来如下, [java] view plain copy org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All t
点击 Download 后会进去另一个页面,这里可以选择我们想要版本,图中箭头指向的就是我们Linux使用的版本。
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。
1.自己电脑下载好jdk的linux版本传到linux上或者直接用wget命令下载
对于web应用集群的技术实现而言,最大的难点就是:如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块。要实现这一点, 大体上有两种方式: 一种是把所有Session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台Session服务器来获取数据; 另一种就是在集群中的所有节点间进行Session数据的同步拷贝,任何一个节点均保存了所有的Session数据。 Tomcat集群session同步方案有以下几种方式: 1)使用tomcat自带的cluste
本博客的目的不在于给出最佳配置,而是带领开发者,能够从实际情况出发,通过不断的调节tomcat和jvm参数,去发现吞吐量,平均响应时间和错误率等信息的变化,同时根据服务器的cpu和内存等信息,结合接口的业务逻辑,最好是测试使用率最高,并发最大,或者是最重要的接口(比如下单支付接口),设置最优的tomcat和jvm配置参数。
最近腾讯云优惠特别巨大,同样的配置老用户得1000多,而新用户只花100就可以买到,用来学习最好不过了,但是很多小伙伴不知道如何配置,也不知道MySQL该安装哪个版本,就简单写个教程,搭建一下基础的环境。如果不是新用户可以用家里人的账号买。登录到Linux服务器,可以直接在web页面登录,也可以使用XShell登录,有社区版,个人用足够了,用不着到处破解。服务器的话选择CentOS7即可,国内的公司服务器基本上用的都是这个。
https://tomcat.apache.org/download-80.cgi
对于Tomcat的优化,主要是从2个方面入手,一是Tomcat自身的配置,另一个是Tomcat所运行的jvm虚拟机的调优。
背景描述 某项目结构图如下(前端交互式体验及对象存储为主,Redis 及 rds 负载较小没有画出): web1 和 web2 是两个 Apache,publisher1 和 publisher2 是
前言 上一篇博客?零基础学Docker【3】 | 一文带你快速进行Docker实战为大家带来了一些Docker应用实战的内容,本篇博客,我们需要完成的目标如下: 理解镜像原理之联合文件
Nmon是一款计算机性能系统监控工具,因为它免费,体积小,安装简单,耗费资源低,广泛应用于AIX和Linux系统。
领取专属 10元无门槛券
手把手带您无忧上云