今天下午,我们搭建了测试服务器,客户的两个管理人员,正在不停的添加数据,突然说页面打开错误,同时添加数据很慢,这时通过监控数据库服务器发现sql语句发现执行正常,但是客户的页面打不开。这时由于JBOSS服务器和数据库服务器都是放在一个服务器上,这时我看看内存和CPU,发现CPU占用100%,一般都在98%以上。这时很奇怪了,sql语句执行都比较快,为何内存占用98%居高不下,而且服务器还是中午重新启动过了。

sql server怎么看最大并发量 sql server 多大并发_java

    这时我们关闭JBOSS服务器,这时cpu的一下下降到了5%左右。

    
     这时继续让业务人员继续录入数据,不过多久,又出现页面打不开的情况,这时没办法,让用户停止添加数据。通过sql监控发现也是执行时间正常,这时通过两个方法来监控数据库。

     1,SQL server 2005 里的Profiler监控正在执行什么语句

     2,同时通过DMVs监控数据库执行了语句次数。

sql server怎么看最大并发量 sql server 多大并发_java_02

 

sql server怎么看最大并发量 sql server 多大并发_SQL_03

间隔几分钟的数据库前后执行语句次数。同时通过SQL Server Profiler监控发现数据库还在不停的执行sql语句,但是这时业务人员已经全部停止操作业务系统了。

      为何还是在执行JBOSS 服务器提交过来的SQL语句。

      这时我想起来,在Eclipse中调试程序时,发现设置了一个断点,没执行完,但是在前台还是可以操作的。这时一下子就明白很多了。

   前提

        1,在这里我还特意设定了为快照隔离级别,保证读写不互相堵塞情况下发生的。

        2,Insert表有6万次表中就只有两个索引,一个单列聚集索引(32位字符),另一般索引(32位字符)

        3,客户用户只有2个人同时频繁操作一个模块。

    原因:

而且这时涉及到SQL语句比较多(虽然很短),但在SQL Server还是一条一条执行的。一下很多请求过来,JBOSS服务器,堆积了很多请求,都在竞争的象SQL Server提交。这时我们发现其实业务操作人员没操作,但数据库还是在不停的执行由JBOSS提交过来的请求的。

    解决办法:            

无能为力,只能通过改程序(或修改业务逻辑等),这也反映了系统的高并发差

    总结:

         1,一个好的系统的确是设计和写出来的,而不是建立诸如几个索引提高的。

减少执行时间

减少交互次数

减少分析和获取执行计划时间