请帮我调整我的服务器 当一次连接数超过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。
答案 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。
中所述