MIDAS中服务器内存不足(100分)

  • 主题发起人 主题发起人 xiaoqi
  • 开始时间 开始时间
X

xiaoqi

Unregistered / Unconfirmed
GUEST, unregistred user!
我在MIDAS中的服务器中,客户端运行时经常造成服务器端出现内存不足,
不知为何种原因
 
主要是因为你的服务器为客户端维护了太多得数据集游标,建议你使用无状态对象,就是设定
ClientDataSet得PacketRecord的值设为-1.
 
没有,我是让客户端提交来后
自己手工插入到数据库的,在DataSetProvider的
BeforeUpdateRecrod 事件中写的,然后将Applied 设为True
我不知道是不是因为这种原因,因为我得PacketRecord全部为-1
 
是不是你有什么地方内存泄漏,你在NT/2000的资源管理器看一下,当一个客户端提交数据的
前后,你的服务器程序的虚拟内存的改变状态,理想的状态是内存大小应恢复原状.然后在屏
蔽掉一些功能,在看内存的变化情况,分析出Bug.
 
客户端提交来的数据存放在Delta中,当我手工处理完
这些数据后(Applied设为True)它们是否自己会释放掉,
如果不释放掉,Server端其不是数据量越来越多,这样
是否就会出现内存不足,一般是在客户端用了一会之后
 
你的服务器端有没有做成Pooler的形式吖,如果没有的话,每增加一个客户端就会运行
多一个服务端的了,起码的几M的了,很多客户端的时候,内存当然很快就不够了。你
可以看看Delphi自身的那个Pooler的例子。
 
你是用的BDE吧﹐BDE在三層中客戶一多是這個樣子﹐我以前也碰到過﹐后來只
好改ADO
我還曾經用delphi做過網頁﹐多刷新几次就看到內存只多不少﹐一會就當掉,
后來用了ADO+MTS效果非常好
 
楼上的应该正确。
 
唉,又是服务实例清除的问题。真烦。
诊断客户端是否在线:客户端定时发送信息给服务端
清除实例: 执行 YourServerSkeleton._release
 
我在用BCB5做多层结构系统时,我在Server端加入了一个取得服务器IP地址的方法:GetServerIP它的参数是vIP:Variant *,IN方式,并在服务端实现了这个方法,
加入的代码如下:
*vIP="192.168.0.01";最后我注册成功。
可是在我开发客户端程序时,我用TSocketConnection
当取得它的服务时我是这样做的:
Variant* vip;
SocketConnection1->AppServer.GetServerIP(vip);
Edit1->Tex=vip;
可 是我在运行程序时出错,没有编译通过。
它说getserverIP不是variant的成员
getserverIP is not a memober of variant
请问?
我该如何去调用这个方法呢?
请各位大侠多多指教?
小生的QQ:65466700(24小时在线恭候)
MAIL: alongsun@sina.com
 
COM+如何创建,
1。如果是接口(早期)的话,自动释放;
2。如果是Variants(晚期)的话,要自己释放;
 
说说我的经验,我们这里用Sochet连接,APPServer资源不能释放
主要是因为Socket连线只连不放,目前我们的解决办法就是设置Socket server
的timerout时间,10或15分钟那不使用就断开socket连接,client使用再连线
效果还算可以!!试一试
 
建議你在BDE的Configuration中
drivers的native中的Oracle項的一些參數調整一下看看
如Schema Cache Size調大些
還有system之init項中
將一些參數如shared memsize
memsize
lowmemory usage limit
等參數值調大些吧
具體情況還須找一下參考資料
如李維的幾本分布式多層應用都有講過
 
这是两层的问题
 
to qiu_peking:
你指的YourServerSkeleton._release怎么使用? YourServerSkeleton在dcom三层中
指的是什么?
 
后退
顶部