R royhgf Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-08 #1 请问我的三层结构,用的是DCOM,为什么,用两三天后,服务器端就出错,客户端就不能连接!!急求原因和解决的办法!!!我已经用完所有积分啦,希望各位可以给个方法!!!
R royhgf Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-09 #5 应该怎样做!!!现在不知道什么原因!!要经常强行关闭服务端程序才行!!烦
差 差不多算了 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-09 #6 参照远程应用开发组件 www.dbanywhere.cn
W wpy020327 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #7 哎,那个skctsvr.exe不知害了多少人。 用阻塞模式是不行的,只能用于少量连接的场合。
R royhgf Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #8 我用的是SocketConnection做链接的,一般同时连接的数目最多十几个啊!!!我也不知道为什么会死掉!!!有时候用几天就会这样的啦!!!请指教..
W wpy020327 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #9 若有能力,改进scktsvr,改成非阻塞的,或者直接以IOCP实现,同时把pooling技术用进去,如任务的polling、线程的pooling等。 若无这实力,就查查资料及scktsvr程序本身,看看Bug在哪里
若有能力,改进scktsvr,改成非阻塞的,或者直接以IOCP实现,同时把pooling技术用进去,如任务的polling、线程的pooling等。 若无这实力,就查查资料及scktsvr程序本身,看看Bug在哪里
W wpy020327 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #10 一般都是线程对象因出错等原因而未能有效释放引起,积压得多了,自然就死了
R royhgf Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #11 我试过同时超过10个客户连接中间层就死掉啦,但我的scktsrvr 里的thread caching属性设置成20还是一样超过10死掉啊.为什么啊? 来自:wpy020327, 时间:2008-8-10 11:27:53, ID:3913394 一般都是线程对象因出错等原因而未能有效释放引起,积压得多了,自然就死了 怎样释放啊,可以给个简单的例子吗?
我试过同时超过10个客户连接中间层就死掉啦,但我的scktsrvr 里的thread caching属性设置成20还是一样超过10死掉啊.为什么啊? 来自:wpy020327, 时间:2008-8-10 11:27:53, ID:3913394 一般都是线程对象因出错等原因而未能有效释放引起,积压得多了,自然就死了 怎样释放啊,可以给个简单的例子吗?
W wpy020327 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #12 如:本来一个线程这样运行的: while not terminateddo begin 线程功能实现 end; 后来因某些原因引起异常,导致线程在执行“线程功能实现”部分代码的过程中被中断了,那么这个线程对象会处于怎样的一个状态呢?还有,因临界资源(比如一个记录)的访问等原因造成死锁,线程越来越多,也就死了。 以前我用SocketThread搞过这方面的编程,但最后还是放弃这种方法了,尽管实现起来代码结构相对清晰,但很难保证不出问题。比如内存泄漏问题、传输超时问题、异常捕捉不全面等,都会导致整个系统出现错误,最后崩溃。 ScktSvr是Borland公司的一个demo程序而已,用它来做商业应用是不妥的。当然,也不知Borland公司怎么想的,这么重要的东西,却做得这么烂,问题多多。
如:本来一个线程这样运行的: while not terminateddo begin 线程功能实现 end; 后来因某些原因引起异常,导致线程在执行“线程功能实现”部分代码的过程中被中断了,那么这个线程对象会处于怎样的一个状态呢?还有,因临界资源(比如一个记录)的访问等原因造成死锁,线程越来越多,也就死了。 以前我用SocketThread搞过这方面的编程,但最后还是放弃这种方法了,尽管实现起来代码结构相对清晰,但很难保证不出问题。比如内存泄漏问题、传输超时问题、异常捕捉不全面等,都会导致整个系统出现错误,最后崩溃。 ScktSvr是Borland公司的一个demo程序而已,用它来做商业应用是不妥的。当然,也不知Borland公司怎么想的,这么重要的东西,却做得这么烂,问题多多。
W wpy020327 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #13 建议你再检查一遍scktsvr程序,可能出现异常的地方都进行捕捉处理,然后注意对敏感代码段进行互拆处理,还有,注意对象、变量等的释放,避免出现内存泄漏。
W wpy020327 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #14 至于无法建立新的客户端连接,那是很自然的事情,用ThreadBlocking模式时,若并发用户数多(你的情况可能是激活状态的线程过多),端口很容易堵塞,不会创建新的连接。解决这个问题的方法是开任务队列,而线程数一般设置一个上限(比如最多32个线程),用这有限的几十个线程来共同完成对任务队列中的任务的处理。(这个就是Thread Pooling)
至于无法建立新的客户端连接,那是很自然的事情,用ThreadBlocking模式时,若并发用户数多(你的情况可能是激活状态的线程过多),端口很容易堵塞,不会创建新的连接。解决这个问题的方法是开任务队列,而线程数一般设置一个上限(比如最多32个线程),用这有限的几十个线程来共同完成对任务队列中的任务的处理。(这个就是Thread Pooling)
W wpy020327 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #15 最后,非常重要的一点:在各个单元加入uses ShareMem; 据我以前的实践经验,加这句之后,会避免很多的内存泄漏引起的异常。
D danng Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #17 你服务器中间层是用Midas方法还是COM+方法开发的?
R royhgf Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #18 mdias啊,这个和scktsrvr有关吗,急求解决方法
M MyMidas Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-10 #19 很多人用的midas 出了不少问题,看来这个解决方案似乎不是很好。