微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tomcat – 在Http连接器中configurationmaxThreads和acceptCount

我目前有一个使用Tomcat部署的应用程序,通过JDBC与Postgres数据库交互。 查询是非常昂贵的,所以我看到的是由Tomcat或Apache导致的超时(Apache在我的configuration中位于Tomcat的前面)。 我试图限制连接到数据库到20-30同时连接,以便数据库不会被压倒。 我已经完成了这个使用 ..configuration,将maxActive设置为30,maxIdle设置为20.我也碰到了maxWait。

在这种情况下,我限制了数据库的使用,但是我希望连接/请求在Tomcat中是POOLED。 Apache可以接受250个同时请求。 所以我需要确保Tomcat也能接受这么多,但是要适当地处理它们。

Tomcat在HTTP连接器configuration文件中有两个设置:

maxThreads – “由Http连接器创build的最大请求处理线程数,因此决定了可以同时处理的最大请求数”。

acceptCount – 当所有可能的请求处理线程正在使用时,传入连接请求的最大队列长度,队列满时收到的任何请求将被拒绝。

所以我猜测,如果我把maxThreads设置为最大数量的JDBC连接(30),那么我可以将acceptCount设置为250-30 = 220。

Apache服务器没有使用适当的virtualenv与Wsgi设置

使用JTA时不能使用EntityTransaction(无手动事务语句)

将Grunt / Gulp和Livereload集成到现有的服务于PHP / Zend的Apache服务器上

Apache上的Django应用程序抛出“地址族不受协议支持

mod_xsendfile不能用于CGI和mod_rewrite

我不太了解在JDBC连接上等待从池中打开的线程与排队的线程之间的区别……我的想法是排队的线程消耗较less的周期,而正在运行的线程,等待JDBC池,将花费周期检查池的免费线程…?

Web和数据库服务器设置以获得UTC时区“正确”

URL重写(SLUG)和URLredirect(htaccess)

如何findApache的httpd.exe安装在哪里?

Apache Wsgi virtualHost,Django virtual env“no module named django.core.wsgi

别名403禁止使用Apache

请注意,HTTP连接器用于传入的HTTP请求,并且与JDBC无关。 您可能需要单独配置JDBC连接池,例如JDBC连接器的connectionProperties: http : //tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

除非您的应用程序在每个http连接的基础上直接连接到数据库的情况下处理请求,那么您应该根据您的数据库软件设置/可以处理的数据库配置您的JDBC连接池,以及您的应用程序/硬件可以处理。

保持maxActive值(db连接池)小于maxThreads(即并发线程数)在大多数情况下是合理的。 您可以将acceptCount设置为较高的值,具体取决于您在网站上期待的流量以及处理一个请求的速度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐