之间是否存在常识可接受的比率
当使用tomcat的Web基础应用程序占用大量数据库资源时?
我的意思是,例如,我们几乎每个HTTP请求连接都在密集使用数据库。因此,例如,配置更少的DP池 maxActive (例如100),而HTTP连接器 maxThreads (例如200)要大两倍。 这样就有可能在HTTP连接之间共享一个同一个DB连接。这可能会导致大量的数据库使用 / 数据库停止连接。
我知道在大多数情况下,Web HTTP请求配置与数据库池配置无关,但是是否存在常见的情况/做法来确定属性之间的比率(maxThreads / acceptCount maxActive)?例如。通常,HTTP maxThreads大于DB maxActives(但是根据我们的示例,认为100%太大是太大了-可以说最大20%或50%?),并且说accpetCount的值更大,以便在应用程序处理其他HTTP请求时将HTTP请求排队?
这里有类似的问题:Tomcat - Configuring maxThreads and acceptCount in Http connector,但没有更精确的答案
答案 0 :(得分:1)
首先,一些说明:
acceptCount :当所有可能的请求处理线程都在使用中时,传入连接请求的最大队列长度。
也就是说,找到这些值之间的比率没有太大价值,因为 maxActive 会施加限制。 maxThreads> = maxActive 是明显的经验法则。
除非您的应用程序负载如此表示,否则将永远无法达到maxThreads ,但是您的数据库池应该能够应对该负载,否则您的应用程序将失败。
在这种情况下,调整性能更多的是关于调整数据库连接池和线程池的动态,而不是设置限制。一旦达到极限,就没什么要做的了,要么查找导致运行缓慢的代码,要么向上扩展。
池动态是指最小的空闲conn /线程,保持空闲多长时间,一次在池中创建多少个新条目等。
希望这会有所帮助!