wangyong3552128 发表于 2012-11-29 19:48:34

请教个问题,有遇到过的讲一下哈,关于数据库与应用连接的

数据库:windows 2008 + ms sql 2008,千兆网卡

应用:IIS7.0 + ASP.net + windows 2008,千兆网卡

测试机:8台windows xp与上面的环境在同一网段,百兆网卡

问题表现:
前段测试机7台的TCP连接几乎都是满的,总并发250vu(大约每台机器36个并发),在IIS服务器上通过netstat -ano确实有250个tcp连接,但是IIS到ms sql 的连接不超过20个,不知道为什么太少。跑的是邮件退订交易,参数化中的数据量2000条。

测试机CPU40%,网络10%左右
IIS服务器CPU最大并发250时CPU80%,网络4.3%
sql server服务器CPU最大并发250时CPU5%,网络2%
(数据库资源较低,主要原因是IIS与sql server的连接数太少,并发压力没有到数据库,被测试的那张表提前生成了600万的数据量,并建立了索引)

我所采取的优化:
1、提高IIS的连接数65536,默认是1000
2、限制sql server的连接数为700,默认是0(即无限制)
但这些优化毫无作用

解决办法:
寻求解决办法

qvbfnsc 发表于 2012-11-30 09:29:44

1、检查下网络情况
   每台前端机的网络使用率是10%(100Mbps网卡),也就是10Mbps,总共是7台吧,70Mbps;
    IIS服务器网络使用率是4.3%(1000Mbps网卡),也就是43Mbps
   按理来说,IIS的网络占用带宽应大于所有客户端使用的总带宽,因为IIS服务器还需要与数据库服务器通信,除非两者是同一台机器上;当然不排除前端机同时也在运行其他程序也占用了一些带宽;
还有,IIS的服务器的可用带宽不只是看网卡,还要看网络结构、传输介质、传输控制是否支持,如网线、路由器;很多时候网卡支持的带宽不是实际上的可用带宽;
2、IIS的CPU使用率达到80%,已经很高了,有没有分析响应时间主要是花在服务器的处理还是网络上,如果花在服务器处理上的时间较多,那就分析服务器哪些资源(CPU、内存、磁盘、网络)紧张?
3、检查数据库;数据库无压力有可能是应用服务器(IIS)没有传递过过来;有可能是数据库本身存在阻塞;
检查一下数数库的相关的指示器。

wangyong3552128 发表于 2012-11-30 09:45:38

测试机和IIS可以先放在一边,他们没有问题的。

关键是数据库与IIS的连接比较少,压力上不来。被测试的那张表中有600多万的数据呢。

qvbfnsc 发表于 2012-11-30 10:39:35

不要轻易下结论,压力传递是有一个过程的,施压方、受压方、压力传输都需要分析;
我原来做过一个某个时间点抢购的业务测试,数据库压力也是上不去,最后发现数据库阻塞造成的,原因是SQL存在问题

wangyong3552128 发表于 2012-11-30 15:17:01

静下心来分析了一下,IIS的w3wp.exe进程只有1一个,针对站点的工作进程,默认为1,修改为10,即开放10个w3wp.exe进程;观察数据库的连接,连接数居然上来啦。但是DB的资源依然很低,分析SQL语句,居然走的是聚集索引,很快的。和DBA沟通了一下,确实是表的索引起作用,每次执行SQL,花费CPU时间片不到1毫秒。

后台有轻微的堵塞,不严重,因为有大量的TCP连接请求进来。
页: [1]
查看完整版本: 请教个问题,有遇到过的讲一下哈,关于数据库与应用连接的