2008-11-04 84 views
2

我正在维护一个网站,目前约有800个并发用户。商业计划表示,这一数字在一年内将增加10倍。Tomcat Web服务器的最佳设置是什么?

这是我的当前配置:

<Connector port="8080" address="${jboss.bind.address}" 
    maxThreads="500" maxHttpHeaderSize="8192" 
    emptySessionPath="true" protocol="HTTP/1.1" 
    enableLookups="false" redirectPort="8443" acceptCount="100" 
    connectionTimeout="20000" disableUploadTimeout="true" /> 

<Connector port="8443" address="${jboss.bind.address}" 
    protocol="HTTP/1.1" SSLEnabled="true" 
    maxThreads="500" minSpareThreads="5" maxSpareThreads="25" 
    scheme="https" secure="true" clientAuth="false" 
    keystoreFile="${jboss.server.home.dir}/conf/ks.p12" 
    keystoreType="PKCS12" connectionTimeout="20000" 
    keystorePass="pass" sslProtocol="TLS" acceptCount="100" /> 

平均使用的线程数为约400(对于每个HTTP/HTTPS)。但峰值确实使用500个线程。当我得到10x用户时,我想我会陷入困境:-)

  • 我该如何调整?
  • 我应该禁用http保持活着吗?我如何配置保持活动超时?
  • 什么值对acceptCount/maxThreads有好处?
+0

由于拒绝完美的答案,您不能提供足够的信息,例如“出于政策原因”。你饱和CPU吗?网络?否则,只需设置maxThreads = 15000“。加快你的应用程序以便早些时候释放线程。(如果你这样做)无需投票下你不喜欢的答案... – 2008-11-05 08:34:08

回答

1

您可以使用JMeter对此进行调整。我认为很大程度上取决于您的特定硬件设置。 扩大您的网站的一种可能的方式是添加机器。请查看Velocity ConferenceHigh Scalability website

+0

是的我知道我可以用更多的机器进行扩展。但是,首先我想充分利用已经在使用的硬件 – Marcel 2008-11-04 12:00:07

4

我认为在Apache Http服务器中放置tomcat是更健壮和更快的方法。这里是专业人士&利弊http://wiki.apache.org/tomcat/FAQ/Connectors

为什么要将Apache与Tomcat集成? (或不)

将Tomcat与Apache集成有很多原因。有理由不这样做。不用说,每个人都会不同意这里的观点。随着Tomcat 5和6的表现,性能原因变得更难以证明。所以这里是要讨论的问题集成与否。

  • 聚类。通过使用Apache作为前端,您可以让Apache充当您的内容到多个Tomcat实例的前门。如果你的某个雄猫失败了,Apache会忽略它,并且你的系统管理员可以在整夜之内休息。如果您使用硬件负载均衡器和Tomcat的群集功能,则可以忽略这一点。
  • 集群/安全。您还可以使用Apache作为不同Tomcat的前门,用于不同的URL名称空间(/ app1 /,/ app2 /,/ app3 /或虚拟主机)。 Tomcats可以分别位于一个受保护的区域,从安全的角度来看,您只需要担心Apache服务器。本质上,Apache成为一个智能代理服务器。
  • 安全。这个主题可以摆脱任何一种方式。 Java拥有安全管理员,而Apache在安全性方面拥有更大的思想和更多技巧。我不会更详细地讨论这个问题,但让Google成为你的朋友。根据你的情况,一个可能比另一个更好。但是请记住,如果您使用Tomcat运行Apache,则您有两个系统可以进行防御,而不是一个。
  • 加载项。在CGI,perl上添加PHP对于Apache来说非常自然。它对于Tomcat来说更慢,更多是一团糟。 Apache还有数百个可以随意插入的模块。 Tomcat可以拥有这种能力,但代码还没有写完。
  • 装修工!使用Tomcat前面的Apache,您可以执行任何Tomcat不支持或不具有即时代码支持的装饰器。例如,可以为Tomcat编写mod_headers,mod_rewrite和mod_alias,但为什么在Apache做得这么好时重新发明轮子?
  • 速度。 Apache在提供静态内容方面比Tomcat更快。但是除非你有一个高流量网站,否则这一点是没有用的。但在某些情况下,tomcat可能比apache更快。所以基准你的网站。
  • 套接字处理/系统稳定性。与Tomcat相比,Apache在错误条件方面拥有更好的套接字处理能力。主要原因是Tomcat必须通过需要跨平台的JVM执行其所有套接字处理。问题是套接字优化是一个特定于平台的考验。大多数情况下,java代码没有问题,但是当你也被丢弃的连接,无效的数据包,无效IP的无效请求轰炸时,Apache在比基于JVM的程序丢弃这些错误条件方面做得更好。 (因人而异)
+0

非常好的apache营销,但我坚持使用tomcat ...公司政策:-) – Marcel 2008-11-04 16:35:15

+0

公司政策否认解决明显的问题?你甚至不允许将apache作为前端基准,服务于静态内容?哇, – 2008-11-05 08:39:09

1

我也想看看调整基础JVM,而不仅仅是tomcat-退房this question一些好的建议,特别是围绕垃圾收集和内存分配。根据我的经验,JVM调优比调整Tomcat内部更有效。

相关问题