文档库 最新最全的文档下载
当前位置:文档库 › Tomcat6 一些调优设置内存和连接数

Tomcat6 一些调优设置内存和连接数

Tomcat6 一些调优设置内存和连接数
Tomcat6 一些调优设置内存和连接数

Tomcat6 一些调优设置内存和连接数

公司的一个服务器使用Tomcat6默认配置,在后台一阵全点击服务器就报废了,查了一下就要是PERMSIZE默认值过小造成(16-64)

TOMCAT_HOME/bin/catalina.sh

添加一行:JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"

问题解决(可能为调用JAR包过多原因)下面是网上看到一些设置

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M

-XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

当在对其进行并发测试时,基本上30个USER上去就当机了,还要修改默认连接数设置:以下红色四行TOMCAT6中好相没有,手工加上就可以了,基本上可以解决连接数过大引起的死机。具体数值可跟据实际情况设置

maxThreads="600"

minSpareThreads="100"

maxSpareThreads="500"

acceptCount="700"

connectionTimeout="20000"

redirectPort="8443" />

这样设置以后,基本上没有再当机过。。。。。

maxThreads="600" ///最大线程数

minSpareThreads="100"///初始化时创建的线程数

maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要

的socket线程。

acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

----------------------------------------------------------------------------------------------------------------------------------

一、Tomcat的JVM提示内存溢出

查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误

二、修改Tomcat的JVM

1、错误提示:https://www.wendangku.net/doc/798131091.html,ng.OutOfMemoryError: Java heap space

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的使用内存即可解决此问题。

Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m

Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’

其中,-Xms设置初始化内存大小,-Xmx设置可以使用的最大内存。

2、错误提示:https://www.wendangku.net/doc/798131091.html,ng.OutOfMemoryError: PermGen space

原因:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存

放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的

Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用

中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的

时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信

息了。

解决方法:

在catalina.bat的第一行增加:

set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m - XX:MaxPermSize=256m

在catalina.sh的第一行增加:

JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m - XX:MaxPermSize=256m

3、JVM设置

堆的尺寸

-Xmssize in bytes

设定Java堆的初始尺寸,缺省尺寸是2097152 (2MB)。这个值必须是1024个字节(1KB)的倍数,且比它大。(-server选项把缺省尺寸增加到32M。)

-Xmnsize in bytes

为Eden对象设定初始Java堆的大小,缺省值为640K。(-server选项把缺省尺寸增加到2M。)

-Xmxsize in bytes

设定Java堆的最大尺寸,缺省值为64M,(-server选项把缺省尺寸增加到128M。)最大的堆尺寸达到将近2GB(2048MB)。

请注意:很多垃圾收集器的选项依赖于堆大小的设定。请在微调垃圾收集器使用内存空间的方式之前,确认是否已经正确设定了堆的尺寸。

垃圾收集:内存的使用

-XX:MinHeapFreeRatio=percentage as a whole number

修改垃圾回收之后堆中可用内存的最小百分比,缺省值是40。如果垃圾回收后至少还有40%的堆内存没有被释放,则系统将增加堆的尺寸。

-XX:MaxHeapFreeRatio=percentage as a whole number

改变垃圾回收之后和堆内存缩小之前可用堆内存的最大百分比,缺省值为70。这意味着如果在垃圾回收之后还有大于70%的堆内存,则系统就会减少堆的尺寸。

-XX:NewSize=size in bytes

为已分配内存的对象中的Eden代设置缺省的内存尺寸。它的缺省值是640K。(-server 选项把缺省尺寸增加到2M。)

-XX:MaxNewSize=size in bytes

允许您改变初期对象空间的上限,新建对象所需的内存就是从这个空间中分配来的,这个选项的缺省值是640K。(-server选项把缺省尺寸增加到2M。)

-XX:NewRatio=value

改变新旧空间的尺寸比例,这个比例的缺省值是8,意思是新空间的尺寸是旧空间的1/8。-XX:SurvivorRatio=number

改变Eden对象空间和残存空间的尺寸比例,这个比例的缺省值是10,意思是Eden对象空间的尺寸比残存空间大survivorRatio+2倍。

-XX:TargetSurvivorRatio=percentage

设定您所期望的空间提取后被使用的残存空间的百分比,缺省值是50。

-XX:MaxPermSize=size in MB

长久代(permanent generation)的尺寸,缺省值为32(32MB)。

三、查看Tomcat的JVM内存

1. Tomcat6中没有设置任何默认用户,因而需要手动往Tomcat6的conf文件夹下的tomcat-users.xml文件中添加用户。

如:

注:添加完需要重启Tomcat6。

2. 访问http://localhost:8080/manager/status,输入上面添加的用户名和密码。

3. 然后在如下面的JVM下可以看到内存的使用情况。

JVM

Free memory: 2.50 MB Total memory: 15.53 MB Max memory: 63.56 MB

四、Tomcat连接数设置

在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。

web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。Unix中如何设置这些参数,请参阅Unix常用监控和管理命令

如何修改和查看tomcat内存大小

如何修改和查看tomcat内存大小 为了解决tomcat在大进行大并发请求时,出现内存溢出的问题,请修改tomcat的内存大小,其中分为以下两种方式: 一、使用catalina.bat 等命令行方式运行的tomcat 查看系统最大支持内存命令:java -Xmx1024m -version 1、修改tomcat\bin\Catalina.bat 文件 windows环境下: 在166行左右 rem Execute Java with the applicable properties ”以下每行 %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTI ON% 在%DEBUG_OPTS% 后面添加-Xms256m -Xmx512m linux环境下: 打开在Tomcat的安装目录的bin文件的catalina.sh文件,进入编辑状态. 在注释后面加上如下脚本: JAVA_OPTS='-Xms512m -Xmx1024m' JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m" 其中JAVA_OPTS='-Xms512m -Xmx1024m' 是设置Tomcat使用的内存的大小. -XX:PermSize=64M -XX:MaxPermSize=256m 指定类空间(用于加载类)的内存大小 保存后,重新以命令行的方式运行tomcat ,即可,然后通过最后面介绍的如何观察tomcat现有内存情况的方法进行查看是否已经变更成功。 二、使用系统中的“服务”,或者开始菜单的可执行程序运行的tomcat 1、关闭现在正在运行的tomcat

Eclipse使用设置、性能调优

Eclipse使用设置、性能调优 eclipse调优 一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,就会有很大的改善。 加快启动速度 1.在eclipse启动的时候,它总是会搜索让其运行的jre,往往就是这个搜索过程让eclipse启动变慢了。(没设置时,等2-3s出现进度条,设置后直接出现进度条) 只要在eclipse.ini中加入-vm的参数就可以了 2.取消所有启动时要激活的插件(在用时激活也一样)和其它的相关的在启动时执行的操作。

3.关闭自动更新

减少jvm内存回收引起的eclipse卡的问题 这个主要是jvm在client模式,进行内存回收时,会停下所有的其它工作,带回收完毕才去执行其它任务,在这期间eclipse就卡住了。所以适当的增加jvm申请的内存大小来减少其回收的次数甚至不回收,就会是卡的现象有明显改善。 主要通过以下的几个jvm参数来设置堆内存的: -Xmx512m 最大总堆内存,一般设置为物理内存的1/4 -Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情况而调整堆的大小了 -Xmn192m 年轻带堆内存,sun官方推荐为整个堆的3/8 堆内存的组成总堆内存= 年轻带堆内存+ 年老带堆内存+ 持久带堆内存年轻带堆内存对象刚创建出来时放在这里 年老带堆内存对象在被真正会回收之前会先放在这里 持久带堆内存class文件,元数据等放在这里 -XX:PermSize=128m 持久带堆的初始大小 -XX:MaxPermSize=128m 持久带堆的最大大小,eclipse默认为256m。如果要编译jdk这种,一定要把这个设的很大,因为它的类太多了。 我的配置(2g内存的笔记本): 还有其它的相关参数可以看看下面的参考材料,很有启发的: -XX:+UseParallelGC 使用并发内存回收 -XX:+DisableExplicitGC 禁用System.gc()的显示内存回收 eclipse.ini -startup plugins/https://www.wendangku.net/doc/798131091.html,uncher_1.3.0.v20120522-1813.jar --launcher.library plugins/https://www.wendangku.net/doc/798131091.html,uncher.win32.win32.x86_1.1.200.v20120522-1813

服务器配置总结

关于服务器配置的总结 工具:J2EE 服务器:Xampp Apache tomcat 时间:8.21-8.22 使用eclipse开发好JavaWeb后,需要将网站文件部署到服务器下才能够正常地使用浏览器进行访问。整个过程大概可以分为以下几个阶段。 一、确保Tomcat正常运行 正常运行的标志是在xampp集成环境中,单击Tomcat后的start按钮后,Tomcat给出如下反馈: 10:46:44 [Tomcat] Attempting to start Tomcat app... 10:46:46 [Tomcat] Status change detected: running 此阶不成功的原因主要是端口配置有误,所需的端口被其它程序占用,需要检查的端口有: 通常不能正常启动时,查看logs下的服务日志catalina.YYYY-MM-DD.log看那个端口被占用,若被占用就该为其它端口(比如加1减1),当Server port控制关闭的端口被占用时不容易发现。 二、确保网站配置正确 当Tomcat运行成功时,在浏览器中输入localhost:8080(配置的端口值),应该出现一个Apache的欢迎页面,如果没有出现,检查以下两个原因: 第一种情况是在webapps/ROOT/WEB-INF/web.xml中没有在标签对中写入index.jsp;第二种情况则是由于webapps/ROOT文件夹下没有Apache 提供的index.jsp文件。 这两个问题并不会的网站部署带来实质问题,但是可以通过检查此项,确认Tomcat是否正常运行,是否真正地配置成功了。 三、部署网站 网站的部署有多种方式,本人使用的是在server.xml中使用标签建立一个新主机,设置其docBase为网站所在的目录。然后再项目文件夹下配置

一次使用EclipseMemoryAnalyzer分析Tomcat内存溢出

前言 在平时开发、测试过程中、甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况: 1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案; 2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,检查堆设置大小(-Xmx与-Xms),检查代码是否存在对象生命周期太长、持有状态时间过长的情况。 以上是处理Java堆问题的思路,具体是怎么进行分析,这里介绍的是使用Eclipse Memory Analyzer tool(MAT)工具分析的过程。 生成dump文件 通过jvm参数--XX:-HeapDumpOnOutOfMemoryError可以让JVM在出现内存溢出是Dump出当前的内存转储快照; 或者,用jmap生产dump文件,win通过任务管理器查看tomcat的进程pid,linux用ps命令查看进程pid,然后用jmap命令(Java5:jmap -heap:format=b ;Java6:jmap -dump:format=b,file= )。 我这里使用的是,我一生产环境项目,运行一段时间大概3周的样子,就会报OutOfMemoryError。(ps:这个项目出现这种情况已经有好长一段时间了,我们之前的做法是定期的重启tomcat,没有去分析它的原因。)JDK64位主要参数: -Xmx3078M -Xms3078M -XX:PermSize=1024M -XX:MaxPermSize=1024M,内存还是蛮大的。 MAT安装与介绍 下载地址:。 通过MAT打开dump出来的内存文件,打开后如下图: 从上图可以看到它的大部分功能。 1. Histogram可以列出内存中的对象,对象的个数以及大小。 2. Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。 consumers通过图形列出最大的object。 Suspects通过MA自动分析泄漏的原因。 Histogram如下图: Objects:类的对象的数量。 Shallow size:就是对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。 Retained size:是该对象自己的shallow size,加上从该对象能直接或间接访问到对象的shallow size之和。换句话说,retained size是该对象被GC之后所能回收到内存的总和。

Tomcat服务器性能调优几个方面

Tomcat性能调优几个方面 一、操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。。 【适用场景】任何项目。 二、Java虚拟机调优 应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改进。 JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。因此对性能要求较高的情况推荐使用 JDK1.6。 【适用场景】任何项目。 三、Apache集成Tomcat Web服务器专门处理HTTP请求,应用服务器是通过很多协议为应用提供商业逻辑。虽然Tomcat也可以作web服务器,但其处理静态html的速度比不上Apache,且其作为web服务器的功能远不如Apache,因此把Apache和Tomcat集成起来,将html和Jsp的功能部分进行明确分工,让Tomcat只处理Jsp部分,其他的由Apache,IIS等web服务器去处理,由此大大提高Tomcat的运行效率。 如果一个项目中大量使用了静态页面、大量的图片等,并有有较大的访问量,推荐使用Apache集成Tomcat的方式来提高系统的整体性能。 Apache和Tomcat的整合有三种方式,分别是JK、http_proxy和ajp_proxy.其中JK方式是最常见的方式,JK本身有两个版本分别是1和2,目前1最新版本是1.2.8,而版本2早已经废弃了。http_proxy是利用Apache自带的mod_proxy 模块使用代理技术来连接Tomcat。Ajp_proxy连接方式其实跟http_proxy方式一样,都是由mod_proxy所提供的功能。只需要把配置中的http://换成ajp://,同时连接的是Tomcat的AJP Connector所在的端口。 相对于JK的连接方式,后两种在配置上比较简单的,灵活性方面也一点都不逊色。但就稳定性而言不像JK这样久经考验,所以建议采用JK的连接方式。Apache+JK+Tomcat配置:

eclipse优化(操作很卡顿)

我的ECLIPSE运行时速度奇慢,具体表现为: 1、只要ECLIPSE启动后,硬盘灯就狂闪,不停的读盘; 2、发布TOMCAT经常在0%; 3、偶尔CPU占满; 网上讲优化的文章无数,但是总是有用的却很少,大部分是转载甚至是抄袭的。在借鉴各个文章的做法并不断尝试后,我的问题终于解决了。 1、启动参数的优化; 我的启动参数为:-Xms976m -Xmx976m -XX:PermSize=128m -XX:MaxPermSize=128m -Xmn168m -XX:+DisableExplicitGC 其中XX:PermSize和XX:MaxPermSize是必须的,仅仅设置Xmx,经常出现ECLIPSE内存溢出的情况; 2、启动插件优化: windows - preference- general - startup and shutdown 里,只保留第1、3、4,其他全部取消,保留的为: Usage DAta Gathering Plug-in, Equinox Provisioning Platform Automatic Updata Support, WTP Webservice UI Plug-in 4、关闭验证 windows - preference-Validation 全部取消,只保留Manual 列; 在工程上右键-Validation ,同样全部取消,只保留Manual列,如果需要检查代码是否有错,可以在代码文件上右键,手动验证。 5、清理工程文件 删除工作空间目录下.metadata\.plugins\https://www.wendangku.net/doc/798131091.html,agedata.recording目录里的所有文件,主要要保留这个目录,只删除目录下文件即可 在经过以上操作后,我的ECLIPSE无论是启动还是发布或者是编译工程,速度都提升了不少,特别是启动,原来要等一两分钟,现在15秒内进界面,并且所有的代码功能、工程编译、发布都不受影响,PUBLISH TOMCAT的时间基本在2分钟以内,我们的工程文件还算是比较大的了。重点是,所有操作过程中硬盘灯再也没出现过狂闪、狂读盘的情况了。以上仅供参考大家参考,欢迎反馈问题和建议,谢谢。

tomcat假死与异常监控

tomcat假死与异常监控 在开发的tomcat服务应用中,经常会遇到tomcat假死情况,除了每次出现假死时找出原因外,有时候由于业务的重要性,需要及时发现服务异常并及时解决。所以本人就想通过Linux定时任务定时监控的方式来预防这个问题,一旦发现及时通知告警并重启服务,然后才通过日志查明原因从根本上解决。 1)tomcat假死状态 处于假死状态时,后台日志不在生成,服务链接没有响应,但tomcat的进程是存在的,所以若要监控是否处于假死状态可以从日志和服务链接方面入手,但由于检测日志比较麻烦,本人选择的是通过选择某个服务链接获取其访问状态码http_code,若状态码不正常则确认为tomcat服务异常。 例如: url=“http://localhost/….” code=$(curl -o /dev/null --retry 3 -s -w %{http_code} $url) echo “${code}” 上面脚本中url变量为选择的适合的监控链接,code就是该链接正常时应该返回的返回码,正常是为200,有时候由于浏览器缓存可能返回302等也是正常的,所以建议最好选择那种后台的链接能够返回200的,这样检测起来比较方便。 2)tomcat异常监控 在tomcat运行日志中,经常会出现一些异常,对于有些异常我们可以不用管,但例如数据库链接异常、内存溢出异常等,这些异常会直接导致服务不能正常使用,所以需要对这些类型的异常进行监控,同样的本人也是通过Linux脚本实时检查tomcat运行日志的方式来检测服务状态。 脚本如下: errormessage1="https://www.wendangku.net/doc/798131091.html,ng.OutOfMemoryError" if cat ${tomcatpath}/logs/catalina.out |grep "$errormessage1">/dev/null then restartFlag="yes" 其实就是通过cat |grep 的方式来查找异常特征字符串是否在运行日志文件中存在,存在则代表出现了该类异常,当然这是需要程序对该类异常做了处理的(捕捉到并输出到控制台)。附带说明:语句 cat …加上了 >/dev/null是为了不输出具体查询的结果的 3)tomcat重启 检查出这些异常时,一般先通过重启服务的方式来优先恢复服务,则对tomcat进行脚本重启。tomcat重启的原理是:先通过命令获取tomcat进程id,然后kill掉该进程id,再重启tomcat命令即可,具体命令如: #tomcat部署路径 tomcatpath="/data/apps/tomcat" #获取tomcat进程id pid=$(ps -ef |grep java| grep ${tomcatpath} |grep -v grep | awk '{print $2}') kill -9 $pid cd ${tomcatpath} ./bin/startup.sh

eclipse设置和优化

1.eclipse下的编码设置: ?eclipse 中使用模板新建JSP,xhtml等文件时,默认的编码为:ISO-8859-1。 ISO-8859-1 编码对于中文的显示是不支持的,如果要支持简体中文,则编码方式应为GBK 或者GB2312 或者UTF-8(推荐) 等。右键菜单栏window --> preferences --> 在type filter text中输入jsp; -->选择下面的jsp -> 选择creating files组中的encoding 为UTF-8编码就可以了 ?如果要使新建立工程、java文件直接使UTF-8则需要做以下工作: ?1、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。 ?2、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Content Types,右侧Context Types 树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java 文件编码为UTF-8。其他java应用开发相关的文件如:properties、XML等已经由Eclipse缺省指定,分别为 ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。 2.取消单词拼写检查 Myeclipse菜单 window——General——Editors——Text Editors——Spelling——把右边的Enable spell checking的勾去掉就行了,也就是取消单词的拼写检查。 3.去除不需要加载的模块 通过Windows - Preferences打开配置窗口,依次选择左侧的General - Startup and Shutdown,这个时候在右侧就显示出了Eclipse启动时加载的模块,可以根据自己的实际情况去除一些模块。 windows–>perferences–>general–>startup and shutdown 关掉没用的启动项: WTP webservice UI plug-in,Equinox Provisioning platform Automatic Update Support 一个是ui视图,一个是自动更新.我去掉了. 还有许多涉及到Jboss的都可以去掉,因为是从Oracle那里拷过来的,但是现在咱们基本上用不到。 4、取消在启动时自动验证项目配置文件 默认情况下Eclipse在启动的时候会自动验证每个项目的配置文件,这是一个非常耗时的过程,可以在Preferences窗口依次选择 Eclipse –Validation(输入查找比较快),然后在右侧的Validator列表中只保留 Manual 项就可以了。

Tomcat部署项目时启动报错总结

Tomcat部署项目时启动报错总结 1、虚拟机报错端口被占用 tomcat的默认端口是8080(或者其他自己设置的),可能已经被其他占用。 解决方法:在tomcat安装路径下conf文件夹中的server.xml中把断口号改掉!如果一台机 器上使用多个tomcat,则改掉所有相关的端口避免重复了,包括想如下 在server.xml中找到如下地方改掉port的值 ● ●(改完后看看和本机上正在用 的tomcat是不是有重复的port) 2、tomcat的启动窗口一闪而过 Tomcat启动的dos窗口一闪而过,如何看出错信息? 在DOS窗口运行STARTUP.BAT文件, 另外,吧startup.bat文件最后的 call "%EXECUTABLE%" start %CMD_LINE_ARGS% 改成: call "%EXECUTABLE%" run %CMD_LINE_ARGS% 分析原因1:jdk的环境变量没有配置好 解决方法:检查jdk环境变量的配置是否正确,或者重新配置jdk的系统环境变量JDK环境变量配置的步骤如下: 1.我的电脑-->属性-->高级-->环境变量. 2.配置用户变量: a.新建JAVA_HOME C:\Program Files\Java\j2sdk1.5.0(JDK的安装路径) b.新建 PATH (注意:把java的配置放在path的最前面) %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin c.新建CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 3.测试环境变量配置是否成功: 开始-->运行--〉CMD 键盘敲入:JAVAC JAVA 出现相应的命令,而不是出错信息,即表示配置成功! 环境变量配置的理解: 1. PATH环境变量。作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin 目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。 2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。 3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

tomcat内存溢出

一.T omcat内存溢出的三种情况及解决办法分析 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError:Java heap space 2.OutOfMemoryError:PermGen space 3.OutOfMemoryError:unable to create new native thread. Tomcat内存溢出解决方案 对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize) 最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。 第一种:是堆溢出。 原因分析: JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx 值。 没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。 -Xms:初始堆大小 -Xmx:最大堆大小 但堆的大小受下面三方面影响: 1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试1612M,64为操作系统对内存无限制。) 2.系统的可用虚拟内存限制; 3.系统的可用物理内存限制。 堆的大小可以使用java -Xmx***M version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。 -Xms -Xmx一般配置成一样比较好比如set JA V A_OPTS= -Xms1024m -Xmx1024m 其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx 等选项可 进行设置 实例,以下给出1G内存环境下java jvm 的参数设置参考: JA V A_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true " JA V A_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX: NewSize=192m -XX:MaxNewSize=384m" CA TALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m"

Eclipse中JVM内存设置

Eclipse中JVM内存设置 eclipse.ini内存设置 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题: 1. 各个参数的含义什么? 2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置? 下面我们一一进行回答 1. 各个参数的含义什么? 参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。 堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memo ry)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 堆内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-X mx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。 非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxP ermSize设置最大非堆内存的大小,默认是物理内存的1/4。 JVM内存限制(最大值) 首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,J VM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows 系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。 2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因: 1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize; 2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。 3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

JAVA内存溢出解决方案

JAVA内存溢出 解决方案 1. 内存溢出类型 1.1. https://www.wendangku.net/doc/798131091.html,ng.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 一个最佳的配置例子:(经过本人验证,自从用此配置之后,再未出现过tomcat死掉的情况) set JAVA_OPTS=-Xms800m -Xmx800m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m 1.2. https://www.wendangku.net/doc/798131091.html,ng.OutOfMemoryError: Java heap space 第一种情况是个补充,主要存在问题就是出现在这个情况中。其默认空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。如果内存剩余不到40%,JVM就会增大堆到Xmx设置的值,内存剩余超过70%,JVM就会减小堆到Xms设置的值。所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。假设物理内存无限大,那么JVM内存的最大值跟操作系统有关,一般32位机是1.5g到3g之间,而64位的就不会有限制了。

Java内存溢出的解决方法

Java内存溢出的解决方法 Java内存溢出的解决方法 一、内存溢出类型 JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果webapp用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。 PermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(GarbageCollection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGenspace错误,这种错误常见在web 服务器对JSP进行precompile的时候。如果你的WEBAPP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 一个最佳的配置例子:(经过本人验证,自从用此配置之后,再未出现过tomcat死掉的情况) setJAVA_OPTS=-Xms800m-Xmx800m-XX:PermSize=128M- XX:MaxNewSize=256m-XX:MaxPermSize=256m 2、https://www.wendangku.net/doc/798131091.html,ng.OutOfMemoryError:Javaheapspace 注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。

基于windows服务监控tomcat服务,防止tomcat死掉

安装tomcat监控服务 安装tomcat监控服务的目的是为了随时监测tomcat的运行状况,若出现内存溢出或其它不能提供正常服务的情况,系统自动能重启tomcat服务,由此减少开发服务人员的工作量,也能提高服务质量。 安装设置分为以下四个步骤: 一、创建监控页面 在项目系统里添加一个提供监控系统访问的页面monitor.jsp,只需输出一句代码,代码如下: <% String s=”ok”; out.println(s.length()); %> 二、修改tomcat配置 若是系统自动安装的服务,可直接跳过这一步。但是需确定服务名称,以便在以后的步骤使用,如下图: 服务名称 若是手动为tomcat设置服务,请按以下步骤进行: 1、进入tomcat目录下的bin目录,用记事本打开service.bat文件,找到set SERVICE_NAME=TOMCA TXX这一句,把后面的值改成自己对tomcat设置的服务名,把PR_DISPLAYNAME的值设置为显示的服务名称,这个是在系统管理的服务里面中列表里显示的名字。 如设置信访系统,则设置为这样:

Set SERVICE_NAME=xfgl Set PR_DISPLAYNAME=tomcat xfgl 保存。 2、在运行里输入“CMD ”,进入命令控制台,使用cd 命令转到tomcat 目录下的bin 目录,运行service.bat install 命令,把tomcat 设置为系统启动服务。 3、进入控制面板->管理工具->服务,在服务列表中找到“tomcat xfgl ”一项,双击弹出窗口,把启动类型改为“自动”,确定保存。 三、 设置监控脚本文件 新建一个vbs 脚本文件,用于访问tomcat 服务下的一个jsp 页面monitor.jsp 。脚本代码如下: 该脚本的目的是定时访问monitor.jsp 页面,判断页面返回的状态码,若状态不为200,则表示该页面未正常返回,可能是tomcat 服务出了问题,随后自动重启tomcat 服务,

eclipse中JUnit安装与配置

软件测试方法和技术 实验报告 实验名称:JUnit安装与配置 学号: 姓名: 班级:计算机1班(数据库) 指导教师:

一.JUnit的简单介绍 JUnit 是Java 社区中知名度最高的单元测试工具。它诞生于1997 年,由Erich Gamma 和Kent Beck 共同开发完成。其中Erich Gamma 是经典著作《设计模式:可复用面向对象软件的基础》一书的作者之一,并在Eclipse 中有很大的贡献;Kent Beck 则是一位极限编程(XP)方面的专家和先驱。 麻雀虽小,五脏俱全。JUnit 设计的非常小巧,但是功能却非常强大。Martin Fowler 如此评价JUnit:在软件开发领域,从来就没有如此少的代码起到了如此重要的作用。它大大简化了开发人员执行单元测试的难度,特别是JUnit 4 使用Java 5 中的注解(annotation)使测试变得更加简单。 JUnit测试是程序员测试,即所谓白盒测试。因为程序员知道被测试的软件如何完成功能和完成什么样的功能。 JUnit本质上是一套框架,即开发者制定了一套条条框框,遵循这此条条框框要求编写测试代码,如继承某个类,实现某个接口,就可以用Junit进行自动测试了。 由于JUnit相对独立于所编写的代码,可以测试代码的编写可以先于实现代码的编写,XP 中推崇的test first design的实现有了现成的手段:用Junit写测试代码,写实现代码,运行测试,测试失败,修改实现代码,再运行测试,直到测试成功。以后对代码的修改和优化,运行测试成功,则修改成功。

二.图解eclipse中安装和使用JUni进行测试的过程 1.使用eclipse创建一个名为Calculator的java项目。添加一个Calculator类。 图1

apache服务器出现内存溢出的解决方法

apache服务器出现内存溢出的解决方法 2011-10-08 14:26 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError: Java heap space 2.OutOfMemoryError: PermGen space 3.OutOfMemoryError: unable to create new native thread. Tomcat内存溢出解决方案 对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize) 最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。 第一种:是堆溢出。 原因分析: JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。 -Xms:初始堆大小 -Xmx:最大堆大小 但堆的大小受下面三方面影响:

颜色配置,使用eclipse保护眼睛的秘诀

颜色配置,使用eclipse保护眼睛的秘诀 操作界面默认颜色为白色。对于我们长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以我经常会改变workspace的背景色,使眼睛舒服一些。设置方法如下: 1、打开window->Preference,弹出Preference面板 2、展开General标签,选中Editors选项,展开。 3、选中Test Editors,右边出现Test Editors面板。面板中有这样一个选项:Appearance color options;其中是各种板块颜色的设置,其中有一项是background color,根据自己的喜好选择颜色。 4、选中background color,勾掉System Default,点击'color',弹出颜色选择面板,选择喜好的颜色,单击确定。 5、返回Test Editors,单击Apply即可。展开Test Editors,还有其他选项,比如对错误提示的颜色样式,如果你对此感兴趣也可尝试更改一下。 背景颜色向你推荐:色调:85。饱和度:1 2 3。亮度:2 0 5 文档都不再是刺眼的白底黑字,而是非常柔和的豆沙绿色,这个色调是眼科专家配置的,长时间使用会很有效的缓解眼睛疲劳保护眼睛。 Eclipse字体大小调整:

窗口(Window)-首选项(Preferences)-常规(General)-外观(Appearence)-颜色与字体(Colors And Fonts),在右边的对话框里选择Java - Java Editor Text Font,点击出现的修改(Change)按钮,可以设置显示在在主窗体中程序的字体大小,设置完之后点击右下角的应用(Apply),最后点击确定(OK)即可。 xml的字体大小调整: window--preferences--General--appearance--colors and fonts--Basic-- "Text font " 然后点change,可以设置字体的大小 windows 窗口背景颜色

tomcat部署项目总结

tomcat部署项目总结 自己在工作当中遇到的一些部署方面的问题,在网上也找到一些但有时候他们说的不是很清楚所以我总结了出来 1.最简单的:在tomcat下的webapps目录下创建一个与你项目相同名字的文件夹,将你的web项目的WebRoot文件夹下的所有文件复制到你创建的文件夹下面。启动tomcat就可以访问了。 2.在eclipse/myeclipse中部署不需要自己创建文件夹系统会自动创建 3.在tomcat下的conf目录下的server.xml中的 里面添加 节点如下: 其中path="/h" 配置虚拟路径 docBase="D:\javaWork\fff\WebRoot"项目所在的路径指向WebRoot目录 reloadable="true" 可以自动加载不需要重启tomcat 当配置文件改变后还是要重启一下,保证正确性 测试开发时设置为"true" 非测试环境还是要设置为"false" 4.在conf\Catalina\localhost目录下配置如果你的tomcat有conf文件夹但没有后面的你可以在下面自己创建注意名字的大小写一定要正确 在该目录下创建一个xml文件文件名就是你要访问的path 可以理解为上面说的虚拟路径内容如下:

相关文档