我们正在使用代理来读取分隔的文本文件,使用smooks进行转换,使用FTL进行转换,然后使用webservice端点来推送数据。
我们正在使用几个自定义类调解器。对于25000条记录的分隔文本文件,最初的交易速度很快。随着时间的推移,事务变慢并最终因OutOfMemory错误而停止。
在分析堆转储时,我们可以发现堆中保留了数百万个对象。
几乎没有数据如下:
org.apache.axiom.om.impl.llom.OMElementImpl
Objects 821247
ShallowSize 65699760
RetainedSize 1729811848
org.apache.axiom.om.impl.llom.OMTextImpl
Objects 11107880
ShallowSize 799767360
RetainedSize 802982200
我们使用'HttpCoreNIOListener/Sender'
和'VFSTransportListener/Sender'
作为传输。
http.socket.timeout = 120000
http.socket.buffer尺寸= 32768
snd_t_core = 20
snd_t_max = 100
snd_io_threads = 2
lst_t_core = 20
lst_t_max = 100
lst_io_threads = 2
http.socket.timeout = 120000
worker_pool_size_core = 400
worker_pool_size_max = 500
synapse.threads.max = 200
synapse.sal.endpoints.sesssion.timeout.default = 600000
statistics.clean.enable =真
synapse.observers = org.wso2.carbon.mediation.dependency.mgt.DependencyTracker
我们甚至尝试将25000条记录分成10个文件,每条2500条记录,并在vfs文件夹中逐一复制。还是一样的行为。
在每25000条记录之后,我们必须重新启动esb服务器。部署了大约50个类似的代理。但是一次只丢弃一个代理文件。
从文档中我们可以知道wso2 esb可以处理数百万个事务,但我们无法通过数千个事务。
请告诉我们我们的方法中可能存在的问题以及如何解决此内存问题?文件在链接http://sdrv.ms/1ap5uwK
中共享