介绍:我自行开发了一个管理软件,是用VB做的,在使用者的电脑上安装客户端,远程服务器上放着SQL数据库(非局域网),各电脑是直接调开SQL库进行操作的(使用者与数据库会跨省),中间无任何层次,另因管理需要,我还必须时实(每分钟)刷新数据库,以便使用者可以获取最新数据;软件需让400个操作员操作(真正同时在操作的30人左右——但不含开着系统而未进行仍何操作且不退出的那部分人),
    使用现况:我在局域网内测试,操作时老是会出现系统掉线、假死现像(平均几分钟一次,每次约15秒恢复),且有时操作速度不快,我的宽速度有20M(这是在局域网内都老是掉线、假死,在公网上就更惨了)
    请那位高手帮忙解决下看吧,十分感谢,如果是在南昌本地的高手,可直接与我联系,可付适当感谢费;,QQ:39469649(加我时请注明“CSDN”字样);

解决方案 »

  1.   

    不玩VB好多年,但个人认为,无论是VB还是别的编程,如果你使用的是ADO与SQL服务器相联。有以下一些个人看法供你参考:一、理论上,你的代码上的问题不涉及服务器,因为服务器只是一个MS SQL。二、当你的掉线情况出现时,请查一下你的服务器的CPU与内存占用情况。根据服务器的情况来给出解决方案。三、如果掉线情况出现,服务器CPU占用高(90%)以上,内存占用过高1G以上,那可能是:
    1、客户端代码有问题,某些查询、更新操作造成了系统锁死。
    2、更可能是你过多地使用了一些要求大计算量、查询量的存诸过程。当前有些朋友的设计很不合理,根本不考虑SQL服务器的占用情况,总以为电脑是足够快的,而不去想如果几十人同时向服务器发出对万条级的表的查询时,服务器是否受得了。故对于记录上万的表,应进行汇总表设计,规避多数常用查询对大记录表的直接查询。
    3、对大记录表的操作应尽量避免模糊查询,模糊查询对服务器CPU的、内存消耗可能是精确查询的五倍以上。
    4、尽可能使用突发式查询,尽量规避使用控件一直在线式的打开表。很多的编程人员喜欢直接放个ADOSET控件在窗体上,窗体打开后,ADO立马联上,并且一直联着。这玩意儿单个对服务器的占用的确不大,但到了上百个联接时,服务器就会明显的变慢。所以,应尽可能使用动态控件,需要时生成,用完就销去。当要求多条数据时,先将数据读入到本地。这要求你基本不使用类似DBGrid之类的控件。不可否认,这给编写者带来了巨大的难处,但不是不可刻服的,如果你需要做一个同时在线客户端超过百人的系统,你只能规避DBGrid之类的东西。四、如果掉线时,服务器没有出现CPU占用高、内存占用高的情况,那么,上面说的就不用考虑了。
    1、你应该考虚你的硬件上的问题,是不是交换机有问题,是不是网线有问题。此时你还可以看看服务器上的数据包的发送接收情况。看看数据量是不是很大。
    2、此外,服务器请一定使用Server,别告诉我你用的是XP,如果用的是XP,那你就太没有常识了,XP是会限制并发线程数的。
    3、服务器上的第三方防火墙请关闭试试,有些防火墙是受不了上百并发联入的,会严重影响服务器的运行状况(此时也可能会出现服务器CPU占用过大的情况)。五、希望你的服务器是非常干净的,否则什么情况都可能出。