Apache Tomcat JVM Heapsize on Redhat 5 64 bit 32 RAM 2四核Xeon性能问题

时间:2016-08-11 18:54:30

标签: java apache tomcat jvm heap-size

请帮我调整我的服务器 当一次连接数超过500我的httpd就冻结并停止响应。

自2008年以来我配置相同,现在已添加了一些RAM,现在我在两台服务器上都有32 Gb

首先安装了RHEL 5 64位2.6.18-53.1.4.el5xen 它将jnlp传递给连接到第二台服务器的客户端

Apache 2.2.3 httpd.conf

String email
String password
Date emailVerified = null
boolean enabled = true
boolean accountExpired
boolean accountLocked
boolean passwordExpired

Set<Role> getAuthorities() {
    AccountRole.findAllByAccount(this)*.role
}

def beforeInsert() {
    encodePassword()
}

def beforeUpdate() {
    if (isDirty('password')) {
        encodePassword()
    }
}

protected void encodePassword() {
    password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password
}

static transients = ['springSecurityService']

static constraints = {
    password blank: false, password: true
    email blank: false, unique: true
    emailVerified nullable: true
}

static mapping = {
    password column: '`password`'
}

带有以下参数的java 1.6.0_27进程

<IfModule prefork.c>
StartServers       8
MinSpareServers   10
MaxSpareServers   75
ServerLimit      1100
MaxClients       1100
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

带有以下参数的tomcat server.xml

java -server -Xmx1280M -XX:MaxPermSize=256M -Djava.awt.headless=true ...

第二台服务器只有与上面相同的JVM java进程HW 连接数超过600的用户数冻结 我昨天已经将Xmx从4000m改为26g,希望这将允许在这个过程中使用更多的RAM。但是没有看到它在顶部使用超过4克。

 ...   connectionTimeout="12000" maxSpareThreads="250" protocol="AJP/1.3" 
 maxHttpHeaderSize="8192" disableUploadTimeout="true" minSpareThreads="25" 
 useBodyEncodingForURI="true" maxThreads="500" acceptCount="100" 
 enableLookups="false" ...

请帮我解决这个问题。我计划升级所有这些,但不确定我的java程序是否适用于新版本的rhel apache tomcat和jvm。

1 个答案:

答案 0 :(得分:0)

这很可能是你在Tomcat方面的问题

maxThreads="500"
在server.xml中

...提高它,这将允许更多的并发连接。

  

<强> maxThreads

     

此连接器要创建的请求处理线程的最大数量,因此确定可以处理的最大并发请求数。如果未指定,则此属性设置为200.如果执行程序与此连接器关联,则忽略此属性,因为连接器将使用执行程序而不是内部线程池执行任务。

From Apache Tomcat documentation

此外,本部分解释了为什么600个客户端可以连接:

acceptCount="100"

这使另外100个客户端可以在队列中等待,直到服务

  

<强> acceptCount

     

所有可能的请求处理线程都在使用时传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为100。

注意:为了能够验证内存情况,您可以使用JMX(jconsole,jvisualvm等)连接到Tomcat,还可以检查很多实际设置,如Monitoring Tomcat FAQ

中所述