数据库100万商品5000个类别(所有类别),没有缓存(因为其它原因),每个页面平均读6次,数据库SQL,经过性能优化.运行结果是:数据库:CPU 90-100%,内存:2G,使用1.6G,索引搜索(700-4000个/s)
程序服务器:CPU 30-50%,数据库链接池,35-42,WEB园15个,一开始是一个,几分钟就出现服务器程序池错误,
浏览效果:稍慢,VS2003的ACT压力测试:
  请求数:7个/s(相当少对吧^_^我也不知道为什么)结论:没有达到预期的效果,(4000人在线,服务器使用一般)如果要提高性能,在不加服务器的前提下要怎么做,高手指点,^_^

解决方案 »

  1.   

    索引作了没有。测试到底是查询数据库慢还是代码里面运行慢。如果真的慢到你说得那个地步直接debug进去逐条代码跟踪就可以感觉哪里慢了。
      

  2.   

    数据库链接池在.net里没什么用武之地,增加缓存才是硬道理。能缓存的都给我缓存。
      

  3.   

    数据库链接池在.net里没什么用武之地? why?
      

  4.   

    确实不要过分使用三层结构:例如对于要查询某一个商品的成本价
        Public ReadOnly Property 成本价(ByVal Department As 分部) As Decimal
            Get
                Dim S As String = "select z.[结算数量],z.[结算金额] from [account_日记账] with(nolock) as z " + vbCrLf + _
                    "inner join [account_会计日期控制] with(nolock) as d on z.[日期]=d.id" + vbCrLf + _
                    "inner join [account_账簿]with(nolock) as b on z.[账簿]=b.id " + vbCrLf + _
                    "where d.[日期]=convert(char(10),getdate(),102) and b.[名称]='库存商品' " + _
                    "   and z.[项目A]='{0}' and [项目B]='{1}'"
                Dim DT As DataTable = Me.GetTable(String.Format(S, Me.ID, Department.ID))
                If DT.Rows.Count = 0 OrElse Math.Abs(CType(DT.Rows(0)("结算数量"), Double)) < 0.0000001 Then
                    Return Me.零售价 / 2
                Else
                    Return CType(DT.Rows(0)("结算金额"), Decimal) / CType(DT.Rows(0)("结算数量"), Double)
                End If
            End Get
        End Property一个SQL能够查询出来的东西,如果通过傻傻的3层查询,可能会慢10倍以上。
      

  5.   

    太慢了.根本打不开页面..检查一下你的select语句有没有问题,多用存储过程~~
      

  6.   

    不至于吧,我当时做的HRM系统使用DELL2400 CPU:900M,RAM:512M,两台做成CLUSTER,使用ACT测试的话,同时可以容纳2000人以上!!