Marklogic 使用MLCP复制数据时分析HTTP标头异常时出错

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

我试图使用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%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设置为零时,套接字将不会重复使用。通过这种方法,可以理解,禁用保持活动不应该对性能产生显著的负面影响,尽管建议进行彻底的测试


我认为您正在淹没源系统或目标系统。试着放慢脚步。请参见我的回答: