我正在尝试执行CORB作业来处理我的文档。但是在处理了整个集合的一部分之后,它抛出了以下异常。
com.marklogic.xcc.exceptions.ServerConnectionException: Connection reset by peer
[Session: user=<username>, cb={default} [ContentSource: <username>, cb={none} [provider: address=<xyz.com>/<IP>, pool=0/64]]]
[Client: XCC/7.0-2, Server: XDBC/7.0-3.1]
at com.marklogic.xcc.impl.handlers.AbstractRequestController.runRequest(AbstractRequestController.java:124)
at com.marklogic.xcc.impl.SessionImpl.submitRequestInternal(SessionImpl.java:388)
at com.marklogic.xcc.impl.SessionImpl.submitRequest(SessionImpl.java:371)
at com.marklogic.developer.corb.Transform.call(Transform.java:68)
at com.marklogic.developer.corb.Transform.call(Transform.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
我们尝试增加线程数和内存分配,但无济于事。
我的要求是两方面的:
这可能是根本原因?有没有办法解决这个问题?
如果不是,是否还有办法在执行相同脚本的外壳程序脚本中捕获此异常?
有许多可能的原因。例如,可能是JVM垃圾回收,服务器上的问题,甚至是网络路径中的问题。盲目地改变事情可能无济于事:首先找出问题,然后纠正。
最常见的是JVM和GC。MarkLogic XCC实现了自己的keepalive机制,类似于HTTP 1.1 keepalive。如果垃圾回收花费太多时间,则可能导致超时和重置。尝试监视以查看JVM是否似乎正在按照其内存分配运行,并在发生错误之前频繁进行垃圾回收。添加-verbosegc
也可能有助于检测到这一点。如果您认为GC是问题所在,请尝试添加-Xincgc
。您可能还希望减少线程数,以减少内存压力。您也可以使用来增加分配-Xmx
。但是不要盲目地这样做,我也不会超过1-GiB。
绝对检查ErrorLog.txt
,并检查常规服务器的运行状况。是否使用任何交换空间?是分页吗?操作系统日志中有可疑的东西吗?发生问题时,CPU,内存,磁盘和网络I / O的外观如何?
偶尔,这种事情会变成防火墙或路由器,它们不喜欢长期存在的连接并关闭它们。如果可能,请进行安排,以使您的客户端和服务器位于同一子网中,除了相对笨拙的集线器或交换机之外,两者之间什么都不要。如果任一主机上都有本地防火墙,请确保它不会干扰。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句