我数据库采用mysql,客户端C# Winform 数量 600个左右 局域网目前采用的方案就是客户端直接连接数据库取数据,大概两秒连接一次,经常出现客户端无法连接的情况,mysql数据库也经常死掉,查看服务器连接 发现很多time_wait状态的连接请教各位大哥,一般这种情况客户端应该用什么方式来访问数据库才能保证正确取到数据,并且保证服务器负荷最小。
刚接手这样的大型项目 找不到门道,还望各位指点迷经,谢谢了。

解决方案 »

  1.   

    一台或若干名通讯服务器用来接收所有或分派到客户的数据
    一台或若干名数据服务器放数据库,全部数据或帐套
    一台登记服务器用来存放登录和配置信息
    软件结构上要预先设计好分区,每个客户ID都隶属某个通讯服务器ID和数据库服务器ID
      

  2.   

    都集中服务端让服务端提供数据,服务端和客户端采用tcp/http连接。
    服务端集中访问DB,可以最小的控制连接DB的数量。还可以进行缓存。假如:原来600个客户端,每个客户端的连接池有3个,那么全部就是1800个
    服务端集中之后提高连接的利用率,可能100个连接就够了。这个服务端推荐用WCF做。
      

  3.   

    WFC我没用过,客户端的请求并没有减少啊 怎么就减轻了服务端的符合了呢?我的客户端是短连接的,取完数据就断开的呀。楼上的大哥给我详细讲解一下吧 还有就是这个WCF服务怎么做?应该要用到IIS吧?Server2003的系统装IIS是否需要另外授权?连接数是否有限制,不好意思一下问了这么多,还望指教。
      

  4.   

    还有就是WCF是3.0才出来的, winform 2.0能调用WCF吗?
      

  5.   

    就算客户端是短连接,但是每个客户端实际都在维护一个连接池。
    就算没有连接池,至少也有1个吧。600个客户端就是600个。
    DB端要为这些实际没用的连接保持session。
    但如果都集中到服务端,那么这个非活动的连接数量可以大大减少。
    当然客户端的请求数不会减少,但是服务请求的数据连接数可以减少。
    比如:你现在每次查询间隔2s,在服务端本来服务A客户端的连接在2s后
    就可以为B客户端服务。这样1个连接完全可以满足多个客户端的请求。
    当然这是由底层完成的调配,完全不用你操心。.net 2.0可以用Remoting或者WebService。
      

  6.   

    Remoting可以不用IIS,因为可以使用tcp/ip协议。
    而服务端应用程序就可以是console,winform,或者windows service。
    局域网还是用Remoting吧。
      

  7.   

    本人菜鸟,我的想法是在服务器上建web程序,程序提供数据接口用来操作数据,客户端使用Winform来向这个web程序提交命令,winform和web进行交互,不知道合不合理