一个关于remoting的棘手问题。 服务端在正常运行一段时间后会自动封闭端口。 哪位高手有过类似经验?
服务端用的是控制台程序, 在运行一段时间后, 客户端访问会抛出“目标服务器积极的拒绝。。。”错误, 重启服务又能正常运行一段时间。 如此反复。
谁有类似经验吗? 可否共享一下。 高分相赠。 谢谢。
本人有近两年的remoting开发经验, 欢迎一起交流。
问题点数:100、回复次数:20Top
1 楼cxyPioneer(matt)回复于 2004-11-12 16:41:24 得分 0
我最近也在接触remoting方面的,我的msn njcxy0218@hotmail.com
最近碰到一个RPC服务器不可用的错误,对方计算机是XP系统还是什么原因Top
2 楼zhh0719()回复于 2004-11-12 17:33:42 得分 0
需要一改写一下远程服务的类的lifetime service这个方法,你试一试弄长一些,我曾经试过,一年都没问题Top
3 楼duanlijun999(大理段氏)回复于 2004-11-12 18:43:05 得分 0
不会吧? 是租借期的问题?Top
4 楼duanlijun999(大理段氏)回复于 2004-11-12 18:56:28 得分 0
我用的是WellKnownObjectMode.Singleton 激活方式, 应该不存在生存期管理的问题啊。Top
5 楼Montaque(每天回答两个问题)回复于 2004-11-13 12:25:58 得分 15
存在生存器的问题,但是断口应该不会关闭。
Top
6 楼majianbing(http://www.flashvod.cn)回复于 2004-11-14 09:46:50 得分 0
我使用了那个Active之类的激活方式,一直都没有出现那个问题.Top
7 楼duanlijun999(大理段氏)回复于 2004-11-15 10:03:26 得分 0
你如果是模拟测试的话, 很难模拟出实际的使用环境, 我曾经想会不会可能是数据访问量过大而把端口堵死了呢?Top
8 楼Miracle(新一代的开山怪)回复于 2004-11-15 19:52:28 得分 0
租约问题。编写代码来显式控制租约生存期就好了。Top
9 楼whmjw(明年今日十年之后)回复于 2004-11-15 19:57:48 得分 0
贴出你的配置文件Top
10 楼duanlijun999(大理段氏)回复于 2004-11-17 09:01:54 得分 0
我并没有使用配置文件, 是在程序中实现对象注册的。
Miracle(新一代的开山怪) :
你是说按照单例方式(Singleton )激活的对象也有租借期的吗? 那默认的租借期是多长时间呢?
租借期到期后发生的事情仅仅是把对象释放而已, 为什么又会造成服务端口无法访问呢?
热切期待您的回复, 谢谢。 :)Top
11 楼duanlijun999(大理段氏)回复于 2004-11-17 10:18:39 得分 0
我刚刚查过资料, 租借期的机制只能用于激活的客户对象, 即SingleCall的一种形式。 而我的服务用的是SingleTon方式注册对象, 就是说任何的客户端在访问该远程对象时访问的都是服务器上的同一个实例, 即服务器上一旦创建了该对象实例,就不会再自动释放(除非关闭服务程序)。
其实这些在刚开始学习remoting的时候就知道了, 只是最近出了这个问题, 有些病急乱投医的心态了。 呵呵。
看来, 我的这个问题还是没有找到正确的解决方案啊。 555555555~~~Top
12 楼Miracle(新一代的开山怪)回复于 2004-11-18 00:28:45 得分 0
不好意思,没有认真审题,Singleton模式不存在租期问题。Top
13 楼Miracle(新一代的开山怪)回复于 2004-11-18 06:36:48 得分 25
再次抱歉,Singleton激活对象才拥有租约,SingleCall模式的对象生存期仅仅是一个调用期间,每有租约,方法结束立刻被销毁。
对于Singleton激活对象,默认租约值是InitialLeaseTime 5分钟,RenewOnCallTime 2分钟,CurrentLeaseTime 5分钟。CurrentLeaseTime一旦递减到0(5分钟没有方法调用)就被销毁。
所以如果想要Singleton激活对象长时间连续运行,就一定要自己控制它的Lifetime,重载InitializeLifetimeService(返回一个null就能永远运行直到进程被关闭),或者用比较简洁的办法,修改config文件。Top
14 楼duanlijun999(大理段氏)回复于 2004-11-18 09:26:48 得分 0
谢谢 Miracle(新一代的开山怪), 通过验证, 你提供的答案, 确实是正确的。
但是对于租期会导致服务程序端口关闭, 我还真是无法理解, 可否指点一二? 谢谢。Top
15 楼Miracle(新一代的开山怪)回复于 2004-11-18 14:15:52 得分 0
Singleton模式下一旦对象被销毁,那么谁来监听端口或者处理连接请求呢?呵呵Top
16 楼ssdjmcj8048(就是俗)回复于 2004-11-18 15:37:58 得分 60
不知道你用的是不是tcp信道,而且是windows2003或xp sp1后的作为服务器,就会出现这样的问题;
建议采用http信道,就应该不会有这样的问题;
这是windows2003和xp sp1的新安全机制导致的。Top
17 楼duanlijun999(大理段氏)回复于 2004-11-19 12:41:55 得分 0
难道对象销毁后, 客户端再请求访问时, 服务器不会重新创建对象吗? 微软不至于这么白痴吧?Top
18 楼duanlijun999(大理段氏)回复于 2004-11-19 12:46:52 得分 0
ssdjmcj8048(优游通[UUT]):
你说对了, 我们的服务就是象你说的这种情况, 使用HTTP信道的时候不会关闭端口, 而在使用tcp访问时就出现这种情况了。
但是我们的一部分用户就在本地, 我希望能够提供最大的访问性能, 所以还是希望用TCP方式,你是否可以就这个新的安全机制略为讲解一下呢? 非常感谢。Top
19 楼ssdjmcj8048(就是俗)回复于 2004-11-21 20:15:37 得分 0
在二进制下,http大概会拥有tcp70%的性能,我想不会对你的应用造成什么过大的本质变化;
另外如果在那种环境下使用tcp通道,兄弟我目前也没有搞出什么结果(没精力了,原谅)Top
20 楼duanlijun999(大理段氏)回复于 2004-11-22 14:22:07 得分 0
非常感谢ssdjmcj8048(优游通[UUT]) 和 Miracle(新一代的开山怪) ,
多谢你们对我的提问的关注以及耐心的解答, 虽然问题还没有得到解决, 但是已经带给了我一些有益的思考。 谢谢。Top





