Marklogic 使用MLCP复制数据时分析HTTP标头异常时出错
我试图使用MLCP将大量数据从一个数据库复制到另一个数据库,但出现以下异常Marklogic 使用MLCP复制数据时分析HTTP标头异常时出错,marklogic,mlcp,Marklogic,Mlcp,我试图使用MLCP将大量数据从一个数据库复制到另一个数据库,但出现以下异常 2019-08-30 11:53:54.847 SEVERE [15] (StreamingResultSequence.next): IOException instantiating ResultItem 130891: Error parsing HTTP headers: Premature EOF, partial header line read: 'X-URI: /integration/test%2BIt
2019-08-30 11:53:54.847 SEVERE [15] (StreamingResultSequence.next): IOException instantiating ResultItem 130891: Error parsing HTTP headers: Premature EOF, partial header line read: 'X-URI: /integration/test%2BItem%2BBarcode%2BCross%2BR'
java.io.IOException: Error parsing HTTP headers: Premature EOF, partial header line read: 'X-URI: /integration/test%2BItem%2BBarcode%2BCross%2BR'
com.marklogic.http.HttpHeaders.parsePlainHeaders(HttpHeaders.java:317)
com.marklogic.http.MultipartBuffer.next(MultipartBuffer.java:103)
com.marklogic.xcc.impl.AbstractResultSequence.instantiateResultItem(AbstractResultSequence.java:132)
com.marklogic.xcc.impl.StreamingResultSequence.next(StreamingResultSequence.java:147)
com.marklogic.xcc.impl.StreamingResultSequence.next(StreamingResultSequence.java:166)
com.marklogic.contentpump.DatabaseContentReader.nextKeyValue(DatabaseContentReader.java:518)
com.marklogic.contentpump.LocalJobRunner$TrackingRecordReader.nextKeyValue(LocalJobRunner.java:498)
org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)
org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)
com.marklogic.contentpump.BaseMapper.run(BaseMapper.java:78)
com.marklogic.contentpump.LocalJobRunner$LocalMapTask.call(LocalJobRunner.java:411)
java.util.concurrent.FutureTask.run(Unknown Source)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
请帮助我理解并解决此问题
我正在使用的MLCP命令-
mlcp copy -mode local -input_host 192.168.1.46 -input_port 9000 -input_username admin -input_password admin -input_database test -output_host localhost -output_port 8000 -output_username admin -output_password admin -output_database test
听起来您可能遇到了一些超时条件。有一篇MarkLogic knowledgebase文章描述了可能发生这种情况的常见场景,以及一些可以帮助避免这种情况的方法 当XCC驱动程序正在读取结果集时,与特定应用程序服务器连接的连接丢失时,通常会发生过早的EOF异常。这可能发生在以下几种情况中:
- 由于硬件问题、SEGFULT或类似问题,主机变得不可用李>
- 查询超时已过期(尽管这更有可能产生带有“超过时间限制”消息的XDMP-EXTIME异常)李>
- 网络中断-网络可靠性问题的可能指标,例如错误配置的负载平衡器或其他一些网络硬件中的故障
- 此类错误的可能原因可能是JVM启动垃圾收集,并且此过程花费的时间足以超过服务器超时设置。如果是这种情况,请尝试添加-XX:+useConMarkSweepGC java选项
- 将受影响的XDBC应用服务器的“保持活动”值设置为零将禁用套接字池,并可能有助于防止出现这种情况;当keep alive设置为零时,套接字将不会重复使用。通过这种方法,可以理解,禁用保持活动不应该对性能产生显著的负面影响,尽管建议进行彻底的测试
我认为您正在淹没源系统或目标系统。试着放慢脚步。请参见我的回答: