B baddy Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-24 #21 to door2000:不太可能,业务规则会变化,新业务会不停地加入 to mikegong:现在已经是一台数据库服务器,一台应该程序服务器了! 请大家支持啊!!
D Door2000 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-24 #22 三层,那应该把全部业务逻辑做到应用服务器端,把数据处理放在线程执行,完毕就废掉,有新的就重开。 可能慢了点,内存该不会吃完吧?你的问题我都没机会碰到,只是想当然的说说,还望原谅
I iamweng Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-24 #24 看我的必杀技,对于一个可伸缩的企业级应用来说,应该有服务器程序进行管理的机制, 它能够随时监看并控制有业务逻辑的应用服务器,你的解决办法是这样:不要管理内存的 问题,你的目的是保证服务器稳定的运行,所以,1.将应用服务器作成无状态的CORBA服务器(名为A), 2.作一个应用服务器控制器管理应用服务器(名为B)。3,启动B。4,启动多个A提供服务。 5.由B定时(或手动)根据A的反应开启和关闭众多的A。6.CORBA机制能够提供负载动态平衡,无状态机制能够保证服务器体面 不受影响的安全退出。这才是真正的解决方案。
看我的必杀技,对于一个可伸缩的企业级应用来说,应该有服务器程序进行管理的机制, 它能够随时监看并控制有业务逻辑的应用服务器,你的解决办法是这样:不要管理内存的 问题,你的目的是保证服务器稳定的运行,所以,1.将应用服务器作成无状态的CORBA服务器(名为A), 2.作一个应用服务器控制器管理应用服务器(名为B)。3,启动B。4,启动多个A提供服务。 5.由B定时(或手动)根据A的反应开启和关闭众多的A。6.CORBA机制能够提供负载动态平衡,无状态机制能够保证服务器体面 不受影响的安全退出。这才是真正的解决方案。
B baddy Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-24 #25 请问大家有没有针对于SQL执行之后如何去清空所占用的缓冲内存的方法,其它的与我们的 服务器与系统的改造要求不太现实!希望大家支持,高手在哪儿??? 救命啊!
B beeta Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-25 #28 我现在正在开发同样的一个系统,现在已经到了测试阶段,但是我在客户机上运行是发现 系统没有调用多线程,由于我没有进行打包发布,不知楼上有没有遇到过这样的问题,同时 我也担心我的程序在7X24运行后会出现同样的问题。
我现在正在开发同样的一个系统,现在已经到了测试阶段,但是我在客户机上运行是发现 系统没有调用多线程,由于我没有进行打包发布,不知楼上有没有遇到过这样的问题,同时 我也担心我的程序在7X24运行后会出现同样的问题。
T Traveller Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-25 #29 出问题的原因可能有: 1.Zero控件包有问题 确认/排除方法:用一个逻辑最简单的测试工程试验,确保用到了在主工程中所用到的全部Zero控件/方法 2.多线程问题 确认/排除方法:白盒:看线程代码中有没有关键资源存在;黑盒:临时改写成单线程程序测试能否正常运行。 3.数据库设置问题 确认/排除方法:试试使用数据库出厂设置,虽然性能可能不佳,但是一般不会有这种内存问题; 如果没有涉及商业数据库具体特性,可以换成其他数据库试试。 4.编码漏洞: 确认/排除方法:查找所有的for/while循环,详细检查他们涉及对象创建等内存相关语句。并且确保每次 创建/释放都有相应的try...finally..end块保护。 另外,查找所有的Exit;语句,这个语句非常容易在内存方面闯祸。 5.未知异常: 确认/排除方法:写Application的OnException事件,每次事件都加以记录,写入日志。 6.其他: 使用BoundChecker,MemProof等工具跟踪吧! 7.内存碎片:既然用M$ Windows就认倒霉吧。
出问题的原因可能有: 1.Zero控件包有问题 确认/排除方法:用一个逻辑最简单的测试工程试验,确保用到了在主工程中所用到的全部Zero控件/方法 2.多线程问题 确认/排除方法:白盒:看线程代码中有没有关键资源存在;黑盒:临时改写成单线程程序测试能否正常运行。 3.数据库设置问题 确认/排除方法:试试使用数据库出厂设置,虽然性能可能不佳,但是一般不会有这种内存问题; 如果没有涉及商业数据库具体特性,可以换成其他数据库试试。 4.编码漏洞: 确认/排除方法:查找所有的for/while循环,详细检查他们涉及对象创建等内存相关语句。并且确保每次 创建/释放都有相应的try...finally..end块保护。 另外,查找所有的Exit;语句,这个语句非常容易在内存方面闯祸。 5.未知异常: 确认/排除方法:写Application的OnException事件,每次事件都加以记录,写入日志。 6.其他: 使用BoundChecker,MemProof等工具跟踪吧! 7.内存碎片:既然用M$ Windows就认倒霉吧。
T Traveller Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-25 #30 如果真的如iamweng所说是SQL执行之后未释放,那么最好跟踪到Zero代码内部去看一看。 另外找出内存丢失的规律也是很重要的,比如运行多长时间会丢多少内存,这样才有可能在调试的时候重现。
B baddy Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-25 #31 用boundchecker没有发现什么内存问题,在IDE环境下也没有提示任何的异常,但是内存照样 在增加,所以这样的问题让我头疼,每个线程都是一个死循环似的函数,只是每个函数里有对 数据库的操作!
T tanhua Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-25 #32 我想提个建议,你可以隔一段时间把你的数据库连接,如BDE的DATASET断开一下,然后在 连接,这样应该可以释放掉所有的专用内存。我的系统也是不停机,一天提交2-3万条数据, 而且是图象,没有内存问题。再不行,你可以试试NT怎么样,我一直觉的2000的内存管理 有问题。
我想提个建议,你可以隔一段时间把你的数据库连接,如BDE的DATASET断开一下,然后在 连接,这样应该可以释放掉所有的专用内存。我的系统也是不停机,一天提交2-3万条数据, 而且是图象,没有内存问题。再不行,你可以试试NT怎么样,我一直觉的2000的内存管理 有问题。
B beeta Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-26 #33 我想你需要对你的程序进行检查,可能你的问题出现在线程的管理上,因为线程一般都是 自动管理的,可能是程序里的某些线程在占用这些内存。无法自动释放。
T Traveller Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-26 #34 我看你先暂时改成单线程试运行一下,先不管性能,把多线程排除了或者确认了就会容易一些。 另外,试试给多线程里面的数据库访问部分加互斥,如果确实是多线程问题,我猜测可能是数 据引擎的内部实现中存在全局变量或类变量,而这个变量指向了动态分配的内存块。
我看你先暂时改成单线程试运行一下,先不管性能,把多线程排除了或者确认了就会容易一些。 另外,试试给多线程里面的数据库访问部分加互斥,如果确实是多线程问题,我猜测可能是数 据引擎的内部实现中存在全局变量或类变量,而这个变量指向了动态分配的内存块。
B baddy Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-26 #35 感谢大家的支持,现在可以肯定的是:这决不是多线程的问题,因为我另一个单线程的程序 也会出现同样的问题,现在我在测试是不是定时器的问题,当然最大的可能还是在于数据库 控件上的问题,对了,大家有没有什么经验,做这样的数据库程序有更好的控件或是其它方 法来处理与数据库交互处理的???
感谢大家的支持,现在可以肯定的是:这决不是多线程的问题,因为我另一个单线程的程序 也会出现同样的问题,现在我在测试是不是定时器的问题,当然最大的可能还是在于数据库 控件上的问题,对了,大家有没有什么经验,做这样的数据库程序有更好的控件或是其它方 法来处理与数据库交互处理的???
Y YANGWEI0308 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-09 #36 我也曾经遇到过类似问题,开始我用的控件是table控件,程序运行不到1天1夜就死掉了。 而且原因不明,烦了我很久,后来把控件全部换成Query控件,奇迹出现了,连续运行个把 月都安然无恙。所以你可以考虑换控件。
我也曾经遇到过类似问题,开始我用的控件是table控件,程序运行不到1天1夜就死掉了。 而且原因不明,烦了我很久,后来把控件全部换成Query控件,奇迹出现了,连续运行个把 月都安然无恙。所以你可以考虑换控件。
C chonghai Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-09 #39 我也有一个程序,运行了快一年了,使用的是MIDAS,基本上不会有这种问题阿。 我觉得可能是每个连接都存在一个连接状态,而当连接端掉的时候,后台并没有端掉, 导致内存持续增加,如果使用无状态连接,可能可以解决这个问题。 只是建议而已,或许有更好的方法。
我也有一个程序,运行了快一年了,使用的是MIDAS,基本上不会有这种问题阿。 我觉得可能是每个连接都存在一个连接状态,而当连接端掉的时候,后台并没有端掉, 导致内存持续增加,如果使用无状态连接,可能可以解决这个问题。 只是建议而已,或许有更好的方法。
B baddy Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-11 #40 感谢大家的支持与帮助! 我想大家都有可能为了一个问题而花费我们大量的时间和精力的事,但是在解决了之后心情 还是挺好的,这个问题算是解决了,不过不是针对ZEOS而解决的,在查询了大量的ZEOS国外 网站的相关内容后,发现是控件对ORACLE技术支持上有点不太完美,明白一个道理:万事不 是完美的,它对MYSQL,MSSQL支持得很好,对于ORACLE去不太理想,因为我的系统是从MYSQL 上转移过来的,所以一直对它有期望,说实在的,对于前段时间我感觉好累,现在解决了, 感觉一身轻松,如果可能想花时间在数据库上,希望以后写代码碰到相关问题能力会有提高。 写代码已经有一年多了,对于以前自己走过的路,选择的工作至今不悔,可是对于我们的前 途却多了几份迷惘。。。。。。 分不多,谁多谁少,大家见谅! 再次感谢大家的真心诚意!
感谢大家的支持与帮助! 我想大家都有可能为了一个问题而花费我们大量的时间和精力的事,但是在解决了之后心情 还是挺好的,这个问题算是解决了,不过不是针对ZEOS而解决的,在查询了大量的ZEOS国外 网站的相关内容后,发现是控件对ORACLE技术支持上有点不太完美,明白一个道理:万事不 是完美的,它对MYSQL,MSSQL支持得很好,对于ORACLE去不太理想,因为我的系统是从MYSQL 上转移过来的,所以一直对它有期望,说实在的,对于前段时间我感觉好累,现在解决了, 感觉一身轻松,如果可能想花时间在数据库上,希望以后写代码碰到相关问题能力会有提高。 写代码已经有一年多了,对于以前自己走过的路,选择的工作至今不悔,可是对于我们的前 途却多了几份迷惘。。。。。。 分不多,谁多谁少,大家见谅! 再次感谢大家的真心诚意!