连接数对db系统的影响
author:skatetime:2012/02/17
环境说明:
A.应用和db之间没有中间层,每台应用jboss服务器单独连接数据库
B.环境为oracle+linux+jboss+apache
连接数对db系统的影响
对于任何一个系统,他都不是一个封闭系统,如果对连接数不加以限制,当系统出现问题,如响应变慢等,
外部请求不断涌入系统中,使系统内部产生大量阻塞并不断恶化,使系统大部分在做阻塞请求的调度。
我们应该选择一个临界点,把连接请求控制一个范围,当系统响应变慢时,系统不再接受新的请求,
系统自身可以处理已有问题(或给人为处理留有时间),然后再接受新的请求。
从app,db两个层次来限制连接数请求,不仅在应用层限制,在db层也要限制连接请求
1. app层:
在应用层控制连接请求数量,如连接数过多,使其在应用层(jboss)排队,避免大量连接请
求打到db系统上,因为db系统在拒绝大量的连接请求也是非常耗资源的。
我们的jboss配置:
A:被阻塞的连接请求如果30s还没得到请求,会抛出错误,
B:一个连接空闲2分钟,jboss会关闭这个连接
说明:“jboss的连接请求有阻塞时很影响jboss的处理能力的,持有的数据库连接也不释放”,
如果再加上数据库响应也变慢,那整体将会更加恶化。
jboss连接池的最重要的作用就是可以节省建立连接所有需要的时间和资源
最小连接数:是根据这台jboss的正常并发连接来设置的,如果其设置的过大,不仅会大量占用db的资源;
也为添加app服务器带来瓶颈,比如db的最大连接数100,每台应用的“最小连接数”都设置20,
那么有5太应用就占满db的session,在添加新的app服务器,就会报数据库连接不够的错误。
可以通过观察应用jboss的使用情况来设置。
最大连接数:是根据这台jboss正常最大并发连接数来设置的,不宜过大,如果其太大,就没有限制的作
用了。根据监控统计数据,作为调整这个参数的依据。
2.db层:
db的session过多导致大量的session进程大量占用pga的空间,使pga的空间紧张,而sort_area_size、
hash_area_size是在pga中,使其供sql使用的空间就变小(使用tempfile,性能低下),sql处理速度就下降,
响应时间就变长,系统就会产生阻塞,如果这个时候,还有大量的session涌入db中,那就使db阻塞更加
严重,系统还需更多资源来完成大量阻塞进程的调度,本来系统可以自身可以修复这性能降低的问题,
然后因为大量新的session涌入,使其成为不可能。把数据库的连接数限制在数据库可以出问题机率
最小的范围内。db层限制连接数可以最大化的保证数据库的稳定性。
---end----
摘自 冰刀(skate)