[英]tomcat - ratio between HTTP Connector maxThreads / acceptCount and JDBC pool maxActive
两者之间是否存在常识可接受的比率
当使用tomcat的Web基础应用程序大量使用数据库时?
我的意思是,例如,我们几乎每个HTTP请求连接都在密集使用数据库。 因此,当我们拥有的时候,配置的DP池maxActive (例如100)要少得多,而HTTP连接器maxThreads (例如200)要大两倍。 这样就有可能在HTTP连接之间共享一个同一个DB连接。 这可能导致大量的数据库使用 / 数据库停顿连接 。
我知道大多数情况下的Web HTTP请求配置与数据库池配置没有关系,但是是否存在常见的情况/做法来确定属性之间的比率(maxThreads / acceptCount maxActive)? 例如,HTTP maxThreads大于DB maxActive是一种常见的做法(但是按照我们的示例,认为100%的最大值太大了-可以说最大20%或50%?),并且说accpetCount更大值,以便在应用程序处理其他HTTP请求时将HTTP请求排队?
这里有一个类似的问题: Tomcat-在Http连接器中配置maxThreads和acceptCount,但没有更精确的答案
首先,一些澄清:
acceptCount : 当所有可能的请求处理线程都在使用中时 ,传入连接请求的最大队列长度。
就是说,找到这些值之间的比率没有太大价值,因为maxActive会施加限制。 maxThreads> = maxActive是明显的经验法则。
除非您的应用程序负载如此说,否则将永远无法达到maxThreads ,但是您的数据库池应该能够应付该负载,否则您的应用程序将失败。
在这种情况下,性能的优化与调整数据库连接池和线程池的动态有关,而不是设置限制。 一旦达到极限,就没什么要做的了,要么找到导致运行缓慢的代码,要么扩大规模。
池动态是指最小的空闲连接/线程,保持空闲状态多长时间,一次在池中创建多少个新条目等。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.