Java 分析应用程序的Tomcat配置

Java 分析应用程序的Tomcat配置,java,tomcat,apache2,timeout,analytics,Java,Tomcat,Apache2,Timeout,Analytics,我正在开发一个与Google analytics非常相似的分析应用程序。 它基本上将来自不同站点的统计数据存储在数据库中 应用程序具有以下属性: 大量请求(峰值时间为2.5k/s) 每个请求的处理量很小 我正在使用Tomcat6和ApacheHTTPD2 对于这种特定类型的应用程序,我应该为Tomcat的maxThreads和connectionTimeout属性设置哪些值?确定特定站点的最佳设置的唯一方法是通过测试。显然,您的Tomcat实例将处理大量非常小的请求,返回的数据很少——这不是

我正在开发一个与Google analytics非常相似的分析应用程序。 它基本上将来自不同站点的统计数据存储在数据库中

应用程序具有以下属性:

  • 大量请求(峰值时间为2.5k/s)
  • 每个请求的处理量很小
我正在使用Tomcat6和ApacheHTTPD2


对于这种特定类型的应用程序,我应该为Tomcat的
maxThreads
connectionTimeout
属性设置哪些值?

确定特定站点的最佳设置的唯一方法是通过测试。显然,您的Tomcat实例将处理大量非常小的请求,返回的数据很少——这不是正常情况。我的猜测是,您可能需要大量线程(可能1000个,默认值为200个)和一个较短的超时时间,但最佳的确切值必须通过测试确定,并可能在现场试验后调整

在过去,我编写了一些小的多线程应用程序来在服务器上发出请求,这既便宜又令人愉快,而且可以获得非常高的请求率。如果您想要更复杂的东西,请查看它,它可以很好地对大多数站点进行负载测试

我认为,如果您担心单个实例会被大量请求淹没,那么应该考虑使用某种形式的负载平衡来运行多个Tomcat实例。因为您似乎在Apache后面运行Tomcat,所以在AJP连接器中设置它应该相当简单

编辑


刚刚看到你的数据更新。我更喜欢看请求/秒,你给出的数字大约是18/秒。我本以为Tomcat能够在不改变设置的情况下处理这些问题。我的猜测是,您在其他地方遇到了瓶颈,可能是在数据存储中,因为我猜数据将进入数据库。

您是否有一些数字/统计数据,说明您的应用程序每天/每月/每年的使用情况?如果不是的话,为什么不发送数百万条请求,直到Tomcat开始轰炸,然后按照你的方式进行测试呢?我每天存储150万条记录,目前使用两台Tomcat服务器,配备8gb RAM和3GHz双核处理器。我知道每天的点击次数并不是很有用。在高峰期,我在每台服务器上的点击率约为每秒2.5公里。我绝对可以尝试增加最大线程数。