一个页面的初始化需要调用10次WebService的接口方法取数据
网站需能负担3000人同时使用
这样频繁调用WebService的速度如何?是不是要把10次操作都合并成一次操作来执行?
那每次响应时间是不是会延迟?
现在每次返回一个序列化的DataTable
如何合并操作则一次返回10个序列化的DataTable拼成的Xml
那可能会达到500K-1M一个XML
传输时间也变长了
请问有什么好的解决方法还是每次只响应一个操作?
多谢了先

解决方案 »

  1.   

    楼主不是说初始化么? 既然是初始化,那就是执行一次就行了呗,难道每个用户登录都要初始化不同的数据?如果相同,可以把初始化后的数据放Cache里面
      

  2.   

    另 WebService本身就是多线程的 实在不行,买好机器吧
      

  3.   

    如果你的DataTable的内容比较多,建议修改select语句,尽可能的少一些数据.
    举个简单例子,譬如登录,每秒并发1000到1200次的话 那你的网站支持的用户大约是10万左右(只是简单的估计,其他操作肯定数据量都比登录多,并且也不是多一点半点)
      

  4.   

    谢谢楼上的朋友
    并不是登陆
    打开每个表单页面都会初始化一些信息
    部门、职位、成本中心等信息
    这些都是通过WebService的接口从CS的程序数据库里捞出来的
    对于每个用户这些信息都不一样
    所以不能放在Cache里使用
    对于拥有3万员工的客户有10%员工同时使用
    不知道这样频繁调用能不能支持
      

  5.   

    3万员工的部门职位,成本中心,即使再多十几个字段,只要是字符型,长度不太大的话
    假设初始化字段有15个 ,每个字段平均64个字符, 那么单纯数据所占的大小为30M左右,如果每个页面(或者大多数页面)都要用到这些数据,放到cache里面应该是可行的
      

  6.   

    通过WebService的接口从CS的程序数据库里捞出来的
    //不太理解你这句话是什么意思
      

  7.   

    另:放cache里面要求这些信息不会频繁update ,譬如一个人的所属的部门,不会三天两头换 ^^
      

  8.   

    这些信息是不能放在Cache的
    捞出来就是查询出来的^_^
      

  9.   

    我的意思是先都捞出来 放cache里面
    每个页面初始化的时候直接读取cache就行了
      

  10.   

    你的cache可以放一个DataTable ,然后用DataTable.Select(XPath)来查询你要的数据
      

  11.   

    你能不能把它用一次调用到所有的信息
    不要调来调去,这样会大地降低了性能
    也就是说要最在程度降低来回调用
    你把你调回的信息用类封装一下
    然后CACHE你的数据
    也就是说
    你初始化调用10次
    是没有任何必要的
    只要一次就可以完成
      

  12.   

    谢谢楼上的
    如果是大家显示的都是一样的数据可以用信息类封装然后Cache
    但是很多信息都是根据不同的人而不一样的
    而且有些信息是级联的