?
1. ? 如果条件许可, ? 首先把iis和sql ? server分到两台服务器中, ? 这样可以避免两者互相影响, ? 也有利于查找直接的原因.(例如, ? 由于IIS工作缓慢, ? 可能会导致不断的向sql发请求, ? 这样看起来似乎就是sql ? server的问题)
2. ? 如果要查询是否连接没有释放引起的, ? 你可以用查询分析器连接到你的数据库服务器, ? 执行下面的代码:
如果这样的进程很多, ? 则说明连接确实有很多连接没有释放(上面的查询查询出已经超过10分钟都没有做任何动作的连接)
3. ? 如果确实是连接没有释放的问题, ? 你可以硬行释放连接, ? 不一定要改程序. ? 在sql ? server中, ? 创建一个job, ? 每10分钟一次, ? 执行下面的代码来定时检查并释放掉空连接就可以了:
2. ? 如果要查询是否连接没有释放引起的, ? 你可以用查询分析器连接到你的数据库服务器, ? 执行下面的代码:
select * from master.dbo.sysprocesses where spid> 50 and waittype = 0x0000 and waittime = 0 and status = 'sleeping ' and last_batch < dateadd(minute, -10, getdate()) and login_time < dateadd(minute, -10, getdate())?
如果这样的进程很多, ? 则说明连接确实有很多连接没有释放(上面的查询查询出已经超过10分钟都没有做任何动作的连接)
3. ? 如果确实是连接没有释放的问题, ? 你可以硬行释放连接, ? 不一定要改程序. ? 在sql ? server中, ? 创建一个job, ? 每10分钟一次, ? 执行下面的代码来定时检查并释放掉空连接就可以了:
declare hcforeach cursor global for select 'kill ' + rtrim(spid) from master.dbo.sysprocesses where spid> 50 and waittype = 0x0000 and waittime = 0 and status = 'sleeping ' and last_batch < dateadd(minute, -60, getdate()) and login_time < dateadd(minute, -60, getdate()) exec sp_msforeach_worker '? '?
DBCP配置:
<Resource name="jdbc/SqlServer" auth="Container" type="javax.sql.DataSource" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dhdd_db" username="sa" password="sa" maxActive="2" maxIdle="1" maxWait="10" removeAbandoned="true" removeAbandonedTimeout="20" logAbandoned="true"????????????? validationQuery="select getDate()" />?
Apusic配置:
<datasource name="test" jndi-name="jdbc/test" driver-class="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = ON)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = RAC_DB)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 20)(DELAY = 15))))" min-spare-connections="10" max-spare-connections="35" max-connections="75" > <property name="user" value="scott"/> <property name="password" value="tiger"/> <property name="test-before-reused" value="false"/> <property name="test-command" value="select 1 from dual"/> <remote-acl> <user>admin</user> <user>j2ee</user> </remote-acl> </datasource>?