JBOSS最大连接数配置和jvm内存配置
- 格式:doc
- 大小:40.50 KB
- 文档页数:8
JBOSS最大连接数配置和jvm内存配置2011-02-15 16:33一.调整JBOSS最大连接数.配置deploy/jboss-web.deployer/serve r.xml文件 .<Connectorport="8080"address="0.0.0.0"maxThreads="1600"minSpareThreads="100" maxSpareThreads="250" emptySessionPath="fals e"enableLookups="false" redirectPort="8443"acceptCount="800"connectionTimeout="200 00"disableUploadTimeout=" true"URIEncoding="UTF-8"/>maxThreads:表示最多同时处理的连接数。
应该将线程数(最大线程数)设置比最大预期负载(同时并发的点击)多25%(经验规则)。
acceptCount:当同时连接的人数达到maxThreads时,还可以接收排队的连接。
minSpareThread:指“启动以后,总是保持该数量的线程空闲等待”;设置比预期负载多25%。
maxSpareThread:指“如果超过了minSpareThread,然后总是保持该数量的线程空闲等待”;设置比预期负载多25%。
其中主要修改两个参数maxThreads和acceptCount值。
增加maxThreads,减少acceptCount 值有利缩短系统的响应时间。
但是maxThreads和acceptCount的总和最高值不能超过6000,而且maxThreads过大会增加CPU和内存消耗,故低配置用户可通过降低maxThreads并同时增大acceptCount值来保证系统的稳定。
将bin文件夹下面的run.bat文件中的set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m改成:set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -Xss 128k -XX:PermSize=256m -XX:MaxPermSize=256m-Xms128m 初始的java内存堆大小128M-Xmx512m 最大的java内存堆大小512M(最好不要超过物理内存的90%)-Xss 128k 每个线程启动所占内存128kXX:PermSize=256m GC预留的内存,如果你的应用有大量的Class被动态载入或卸载,你应该把这个参数设大些-XX:MaxPermSize=256m 最大的GC预留内存PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。
这一部分用于存放Class和Meta的信息,Class在被Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space 进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。
这种错误常见在web服务器对JSP进行pre compile的时候。
改正方法,在run.bat 中加入:-Xms128m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=256m因为项目中引用了很多的jar 包,而这些jar 包中的class 信息会被JBoss 的class loader 加载到PermGen space 区域,在JVM 默认的情况下,该部分空间的大小只有4M,在jar 包非常多的情况下,显然是不够用的,所以通过-XX:MaxPermSize=256m 指定最大值后即可解决问题。
JVM标准参数简介Java虚拟机(JVM)是Java程序的运行环境,负责将Java字节码转换为机器码并执行。
JVM标准参数是指在启动Java应用程序时,可以使用的一组参数。
这些参数可用于控制JVM的行为,优化应用程序的性能,以及进行调试和监控。
分类JVM标准参数可以分为以下几类:内存管理参数•-Xmx:设置JVM堆内存的最大值。
例如,-Xmx1g表示将堆内存的最大值设置为1GB。
•-Xms:设置JVM堆内存的初始值。
例如,-Xms512m表示将堆内存的初始值设置为512MB。
•-Xmn:设置JVM堆内存的新生代大小。
例如,-Xmn256m表示将新生代的大小设置为256MB。
•-XX:MaxPermSize:设置JVM永久代的最大值。
例如,-XX:MaxPermSize=256m 表示将永久代的最大值设置为256MB。
垃圾回收参数•-XX:+UseSerialGC:使用串行垃圾回收器。
•-XX:+UseParallelGC:使用并行垃圾回收器。
•-XX:+UseConcMarkSweepGC:使用并发标记清除垃圾回收器。
•-XX:+UseG1GC:使用G1垃圾回收器。
类加载参数•-Xbootclasspath:设置JVM的引导类路径。
•-Xbootclasspath/a:在引导类路径中追加指定的路径。
•-Xbootclasspath/p:在引导类路径中预先加载指定的路径。
调试参数•-Xdebug:开启远程调试功能。
•-Xrunjdwp:设置远程调试的参数。
监控参数•-XX:+PrintGC:打印垃圾回收的日志信息。
•-XX:+PrintGCDetails:打印详细的垃圾回收日志信息。
•-XX:+PrintGCDateStamps:打印垃圾回收的时间戳。
•-XX:+PrintHeapAtGC:在进行垃圾回收时打印堆的使用情况。
使用示例以下是一些常见的JVM标准参数的使用示例:1.设置JVM堆内存的最大值和初始值为1GB:-Xmx1g -Xms1g2.使用并发标记清除垃圾回收器:-XX:+UseConcMarkSweepGC3.设置JVM的引导类路径和追加路径:-Xbootclasspath:/path/to/classes -Xbootclasspath/a:/path/to/append4.开启远程调试功能,并设置调试的端口号:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=50055.打印详细的垃圾回收日志信息:-XX:+PrintGCDetails注意事项在使用JVM标准参数时,需要注意以下几点:1.参数的顺序可以任意调整,但通常建议将内存管理参数放在前面。
jvm内存分配原则JVM内存分配原则JVM(Java Virtual Machine)是Java语言的核心部分,作为一个虚拟机,它在运行Java程序时负责内存的分配和管理。
JVM内存分配原则是指JVM在运行Java程序时,根据一定的规则和策略,对内存空间进行分配的原则。
本文将从不同的角度介绍JVM内存分配原则。
1. 程序计数器(Program Counter Register)程序计数器是JVM中的一块较小的内存区域,它用于指示当前线程执行的字节码指令的地址。
在JVM中,每个线程都有一个独立的程序计数器。
程序计数器区域是唯一一个在JVM规范中没有规定任何OutOfMemoryError情况的区域。
2. Java堆(Java Heap)Java堆是JVM中最大的一块内存区域,用于存储对象实例和数组。
Java堆是所有线程共享的一块内存区域,几乎所有的对象实例和数组都在堆上分配。
Java堆的大小可以通过-Xmx和-Xms参数来指定,其中-Xmx参数用于设置最大堆大小,而-Xms参数用于设置初始堆大小。
3. 方法区(Method Area)方法区是JVM中用于存储类信息、常量、静态变量和即时编译器编译后的代码等数据的一块内存区域。
方法区也是所有线程共享的一块内存区域。
在JVM规范中,方法区被定义为一个逻辑区域,它可以是连续的内存空间,也可以是不连续的内存空间。
4. 虚拟机栈(VM Stack)虚拟机栈是JVM中用于存储局部变量表、操作数栈、动态链接、方法出口等数据的一块内存区域。
每个线程在执行Java方法时,都会创建一个对应的虚拟机栈。
虚拟机栈的大小可以通过-Xss参数来指定,其中-Xss参数用于设置每个线程的栈大小。
5. 本地方法栈(Native Method Stack)本地方法栈与虚拟机栈类似,但它是用于执行本地方法(Native Method)的一块内存区域。
本地方法是使用C、C++等语言编写的,并且使用JNI(Java Native Interface)与Java程序交互。
JBoss 7启动内存调优
以一台服务器一个项目分配8G内存为例
修改bin/standalone.conf文件配置
-Xms2048m -Xmx8192m -XX:MaxPermSize=4096m
各主要参数的作用如下:
-Xms:设置jvm内存的初始大小
-Xmx:设置jvm内存的最大值
-Xmn:设置新域的大小(这个似乎只对 jdk1.4来说是有效的,后来就废弃了)
-Xss:设置每个线程的堆栈大小(也就是说,在相同物理内存下,减小这个值能生成更多的线程)
-XX:NewRatio :设置新域与旧域之比,如-XX:NewRatio = 4就表示新域与旧域之比为1:4
-XX:NewSize:设置新域的初始值
-XX:MaxNewSize :设置新域的最大值
-XX:PermSize:设置永久域的初始值
-XX:MaxPermSize:设置永久域的最大值
-XX:SurvivorRatio=n:设置新域中Eden区与两个Survivor区的比值。
(Eden区主要是用来存放新生的对象,而两个 Survivor区则用来存放每次垃圾回收后存活下来的对象)
下表罗列出了在不同并发情况下jboss参数与并发在线的一般关系。
并发数服务器内存jboss参数
maxThreads acceptCount
50以下2G256800
50-3004G6001024
300-8008G10241528
800-10008G10242048
1000-120012G15262048
1200-150016G20482048。
JVM内存大小配置方式By:sheagle@1.最简单的方式,tomcat当中进行配置用记事本打开tomcat安装路径下bin文件夹中的Catalina.bat,在文件当中添加set JAV A_OPTS=-Xms256m-Xmx512m该方式只适合于使用Catalina Start指令及其类似方式通过执行Startup.bat中的指令方式启动tomcat2.在Eclipse当中配置tomcat的内存启动大小Eclipse->Window->Preferences->Server->Runtime Environments->选中Apache Tomcat v5.0->点击Edit按钮->在弹出对话框里点击JRE后面的Installed JREs按钮->在弹出对话框中选中tomcat使用的那个JRE->点击Edit按钮->在弹出对话框中,找到Default VM Arguments,并在输入框中输入:-Xms256M-Xmx512M该修改方式只适合于使用Eclipse启动tomcat3.在注册表中修改tomcat大小如果你的电脑上边安装了tomcat服务,那么你也可以通过以下设置来修改通过服务启动时的tomcat内存。
打开tomcat安装路径下bin文件夹中的tomcat6w.exe。
选中Java,修改Inital memory pool和Maximum memory pool该修改方式只适合于使用“服务”方式启动tomcat总结:关于tomcat启动时JVM虚拟机内存大小的配置,针对每种情况会有多种不同的配置方式,基本上都是修改配置文件中参数的大小,无论使用哪种配置方式进行配置,只要能达到效果即可。
jvm常见参数JVM(Java Virtual Machine)是Java程序运行的虚拟机,用来执行Java字节码。
在运行Java程序时,可以通过设置JVM参数来优化应用程序的性能和内存使用。
本篇文章将介绍JVM中的一些常用参数。
1. 堆内存参数堆内存是Java程序中最重要的内存区域之一,主要用于存放对象实例。
JVM中的-Xms参数用来设置堆内存的初始大小,-Xmx参数用来设置堆内存的最大大小。
当堆内存超过最大值时,会抛出OutOfMemoryError异常。
例如,以下命令将初始化堆内存为512M,最大为1024M:java -Xms512m -Xmx1024m MainClass2. 栈内存参数栈内存是Java中的线程栈,主要用于存放方法的局部变量和参数。
JVM中默认栈内存大小为1M,可以通过-Xss参数来指定栈内存大小。
例如,以下命令将设置栈内存为2M:java -Xss2m MainClass3. 方法区参数方法区用于存放类的信息、静态变量和字节码等数据。
JVM中可以通过-XX:PermSize参数设置方法区的初始大小,-XX:MaxPermSize 参数设置方法区的最大大小。
例如,以下命令将设置方法区初始大小为256M,最大为512M:java -XX:PermSize=256m -XX:MaxPermSize=512m MainClass4. GC参数垃圾回收(GC)是JVM中的一个重要功能,它可以释放不再使用的内存。
JVM中可以通过以下参数来优化GC:-XX:+UseSerialGC:使用串行垃圾回收器。
-XX:+UseParallelGC:使用并行垃圾回收器。
-XX:+UseConcMarkSweepGC:使用CMS垃圾回收器。
-XX:+UseG1GC:使用G1垃圾回收器。
-XX:+PrintGCDetails:打印GC详细信息。
例如,以下命令将使用并行垃圾回收器并打印GC详细信息:java -XX:+UseParallelGC -XX:+PrintGCDetails MainClass5. 其他参数还有一些其他JVM参数,例如:-XX:NewSize:设置年轻代大小。
一.Jboss后台启动:添加后台修改命令:vi run.shwhile true; doif [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then# Execute the JVM in the foregroundnohup "$JA V A" $JA V A_OPTS \-Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \-classpath "$JBOSS_CLASSPATH" \org.jboss.Main "$@"JBOSS_STATUS=$?else# Execute the JVM in the background"$JA V A" $JA V A_OPTS \-Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \-classpath "$JBOSS_CLASSPATH" \org.jboss.Main "$@" &JBOSS_PID=$!# Trap common signals and relay them to the jboss processtrap "kill -HUP $JBOSS_PID" HUPtrap "kill -TERM $JBOSS_PID" INTtrap "kill -QUIT $JBOSS_PID" QUITtrap "kill -PIPE $JBOSS_PID" PIPEtrap "kill -TERM $JBOSS_PID" TERM# Wait until the background process exitsWAIT_STATUS=0while [ "$WAIT_STATUS" -ne 127 ]; doJBOSS_STATUS=$W AIT_STATUSwait $JBOSS_PID 2>/dev/nullWAIT_STATUS=$?donefi# If restart doesn't work, check you are running JBossAS 4.0.4+# /jira/browse/JBAS-2483# or the following if you're running Red Hat 7.0# /developer/bugParade/bugs/4465334.htmlif [ $JBOSS_STA TUS -eq 10 ]; thenecho "Restarting JBoss..."elseexit $JBOSS_STA TUSfidone &二.Jboss内存优化:修改这个两参数,给jvm分配适当的内存,一般为服务器的3/4内存量,推荐至少使用4G内存。
关于JBOSS服务器性能配置说明一、服务器性能配置:1.运行堆扩容设置:找到JBOSS 4.0+安装目录,以<JBOSS>为例;找到<JBOSS>\bin\run.conf文件,搜索并找到这行(一般是在第43行):JA V A_OPTS="-server –Xms128m –Xmx512m …将以上内容修改成:JA V A_OPTS="-server –Xms500m –Xmx1000m -XX:PermSize=200m -XX:MaxPermSize=400m …✓备注:以下四个参数分别含义如下:-Xms:最小运行堆容量;-Xmx:最大运行堆容量;-XX:PermSize:通常运行的垃圾回收(gc)堆容量;-XX:MaxPermSize:垃圾回收(gc)最大堆容量;二、数据库连接池配置:1.找到JBOSS应用程序发布目录,一般为<JBOSS>\server\default\deploy;2.新建一个oracle-ds.xml文件,大致内容如下:<?xml version="1.0" encoding="UTF-8"?><datasources><local-tx-datasource><!—在java环境上下文中可以调用到的资源名称→<jndi-name>PIPM-oracle</jndi-name><!—数据库jdbc连接的URL →<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url><!—jdbc驱动→<driver-class>jdbc.oracle.driver.oracleDriver</driver-class><!—数据库登录用户名→<user-name>sxpipm_real</user-name><!—数据库登录用户密码→<password>sxpipm_real</password><!—连接池最小连接数→<min-pool-size>5</min-pool-size><!—连接池最大连接数→<max-pool-size>20</max-pool-size><!—闲置连接超时时间分钟数→<idle-timeout-minutes>30</idle-timeout-minutes><!—跟踪数据库操纵记录→<track-statements/><!—预读式数据库操纵缓存容量(kb) →<prepared-statement-cache-size>32</prepared-statement-cache-size></local-tx-datasource></datasources>3.在现有投资计划管理系统中调用以上定义的数据库连接池:在应用程序代码中找到hibernate.properties文件(一般在src目录下或WEB-INF\classes 下);关闭原先的jdbc连接方式配置(条目前面加#符号):# hibernate.connection.url jdbc:oracle:thin:@localhost:1521:orcl# ername sxpipm_real# hibernate.connection.password sxpipm_real启用已配置的数据库连接池(取消条目前的#符号):hibernate.connection.datasource java: PIPM-oraclehibernate.connection.pool_size 20hibernate.statement_cache.size 32hibernate.jdbc.fetch_size 50hibernate.jdbc.batch_size 25至此,数据库连接池已配置完毕;重新启动JBOSS服务器就可以正式启用连接池。
JBOSS最大连接数配置和jvm内存配置
2011-02-15 16:33
一.调整JBOSS最大连接数.
配置
deploy/jboss-web.deployer/serve r.xml文件 .
<Connector
port="8080"
address="0.0.0.0"
maxThreads="1600"
minSpareThreads="100" maxSpareThreads="250" emptySessionPath="fals e"
enableLookups="false" redirectPort="8443"
acceptCount="800"
connectionTimeout="200 00"
disableUploadTimeout=" true"
URIEncoding="UTF-8"
/>
maxThreads:表示最多同时处理的连接数。
应该将线程数(最大线程数)设置比最大预期负载(同时并发的点击)多25%(经验规则)。
acceptCount:当同时连接的人数达到maxThreads时,还可以接收排队的连接。
minSpareThread:指“启动以后,总是保持该数量的线程空闲等待”;设置比预期负载多25%。
maxSpareThread:指“如果超过了minSpareThread,然后总是保持该数量的线程空闲等待”;设置比预期负载多25%。
其中主要修改两个参数maxThreads和acceptCount值。
增加maxThreads,减少acceptCount 值有利缩短系统的响应时间。
但是maxThreads和acceptCount的总和
最高值不能超过6000,而且maxThreads过大会增加CPU和内存消耗,故低配置用户可通过降低maxThreads并同时增大acceptCount值来保证系统的稳定。
下表罗列出了在不同并发情况下jboss参数与并发在线的一般关系。
二.调整 jvm参数
A:JVM启动参数共分为三类:
其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
其二是非标准参数(-X),指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。
但是在生产环境中,并不保证所有jvm实现都满足,所以为了提高性能,往往需要调整这些参数,以求系统达到最佳性能。
另外这些参数不保证向后兼容,也即是说“如有变更,恕不在后续版本的JDK 通知”(这是官网上的原话);
其三是非Stable参数
(-XX),这类参数在jvm中是不稳定的,不适合日常使用的,后续也是可能会在没有通知的情况下就直接取消了,需要慎重使用。
B:而JVM 内存又可分为三个主要的域:
新域、旧域以及永久域。
JVM 生成的所有新对象放在新域中。
一旦对象经历了一定数量的垃圾收集循环后,便进入旧域。
而在永久域中是用来存储JVM自己的反射对象的,如class和method对象,而且
GC(Garbage Collection)不会在主程序运行期对永久域进行清理。
其中新域和旧域属于堆,永久域是一个独立域并且不认为是堆的一部分。
C:各主要参数的作用如下:
-Xms:设置jvm内存的初始大小
-Xmx:设置jvm内存的最大值
-Xmn:设置新域的大小(这个似乎只对 jdk1.4来说是有效的,
后来就废弃了)
-Xss:设置每个线程的堆栈大小(也就是说,在相同物理内存下,减小这个值能生成更多的线程)
-XX:NewRatio :设置新域与旧域之比,如-XX:NewRatio = 4就表示新域与旧域之比为1:4
-XX:NewSize:设置新域的初始值
-XX:MaxNewSize :设置新域的最大值
-XX:PermSize:设置永久域的初始值
-XX:MaxPermSize:设置永久域的最大值
-XX:SurvivorRatio=n:设置新域中Eden区与两个Survivor区的比值。
(Eden区主要是用来存放新生的对象,而两个 Survivor区则用来存放每次垃圾回收后存活下来的对象)
D:常见的错误:
ng.OutOfMemoryEr
ror相信很多开发人员都用到过,这个主要就是JVM参数没有配好引起的,但是这种错误又分两种:ng.OutOfMemoryError: Java heap space和
ng.OutOfMemoryError: PermGen space,其中前者是有关堆内存的内存溢出,可以同过配置-Xms 和-Xmx参数来设置,而后者是有关永久域的内存溢出,可以通过配置-XX:MaxPermSize来设置。
下面是个例子,请根据实际情况进行修改,修改run.conf文件中的如下内容:
JAVA_OPTS="-Xms256m -Xmx2048m -XX:NewSize=256m
-XX:MaxNewSize=512m
-XX:PermSize=128m
-XX:MaxPermSize=256m
-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djboss.platform。