IIS WebService 内存溢出问题的修改过程

来源:互联网 发布:幼儿园网络研修的简报 编辑:程序博客网 时间:2024/06/06 03:06

最近之前开发的数据同步定时服务经常出现服务停止的情况,根据系统日志,最终定位为IIS上的webservice抛出System.outOfMemory异常,也就是内存溢出的异常。于是,对该问题进行各种尝试性修复。主要收获到了以下几点:

1、IIS内存限制

IIS默认为当内存达到物理内存的60%进行回收,因此当站点运行占用内存达到60%时,会产生内存溢出的错误。

2、在进行数据查询的时候,要考虑数据量的问题。

进行数据同步,主要是从数据源查询数据,写入到另外一个数据库。开始只是进行了时间限制。但是往往会存在可能会同步大量数据的情况或者同一服务同步大量类别数据的情况,如果不进行限制,自然就会占用大量的内存,引起内存溢出的异常。

所以在查询时,要使用分页,这样无论需要同步数据量多少,都不会占用非常大的内存了。

3、ORACLE分页的问题。

在修改过程中开始使用 

SELECT xx.* FROM

SELECT t.*,row_number() over(ORDER BY o_id)AS num FROM t_order t 

)xx 

WHERE num BETWEEN 0 AND 500

这种语句进行分页,但是在运行过程中会出现丢失数据的问题。发现这种排序分页,并不是按照排序字段进行分页的。

具体的原因还未找到,于是使用了

SELECT xx.* FROM

select rownum as rownumber,t_order .* from
                                (SELECT * FROMt_order t_order 

)xx 

WHERE num BETWEEN 0 AND 500

的语句进行排序和分页。

目前运行未发现数据丢失。之前的情况为何会出现丢失的情况,过后再查找。



目前来看,暂时未出现内存溢出异常和数据丢失的情况,过后再观察看看吧。暂时记录,留备以后使用。


知行办公,专业移动办公平台 https://zx.naton.cn/
【总监】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com;
【运营】狼行天下,897221533@qq.com;
【产品设计】流浪猫,364994559@qq.com;
【体验设计】兜兜,2435632247@qq.com;
iOS】淘码小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
Android】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com;
【java】首席工程师MR_W,feixue300@qq.com;
【测试】土镜问道,847071279@qq.com;
【数据】喜乐多,42151960@qq.com;
【安全】保密,你懂的。