我们有一个三节点Nifi群集,该群集位于后端,而haproxy(LB)位于前端,具有定义的端口,供客户端向LB发送请求,该请求将以循环方式打入后端的Nifi群集。
我们建立了一个管道,该管道具有“ HandleHTTPRequest”->使用多个处理器的中间处理| “ HandleHTTPResponse”。客户端应用程序可能会发送具有不同文件扩展名的多部分有效负载,并且在我们根据业务逻辑进行解析和处理的管道内,然后将其移至网络/中央驱动器。
当客户端应用程序提交并行有效负载时,“ HandleHTTPRequest”处理器上的以下错误将使我们受挫。
-我试图将“ HandleHTTPRequest”的并发任务从“ 1”增加到10,并且集群中的所有节点都可以处理任务的增加,因为我们有足够的CPU。 -我们将容器队列的大小从“ 50”增加到“ 80” -尝试将控制器服务中的超时时间更改为2分钟。
Nifi日志中的错误消息:
Failed to receive content from HTTP Request from due to org.eclipse.jetty.io.EofException: Early EOF: org.eclipse.jetty.io.EofException: Early EOF
org.eclipse.jetty.io.EofException: Early EOF
at org.eclipse.jetty.server.HttpInput$3.getError(HttpInput.java:1138)
at org.eclipse.jetty.server.HttpInput$3.noContent(HttpInput.java:1126)
at org.eclipse.jetty.server.HttpInput.read(HttpInput.java:313)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at org.eclipse.jetty.util.ReadLineInputStream.read(ReadLineInputStream.java:131)
at org.eclipse.jetty.util.MultiPartInputStreamParser.parse(MultiPartInputStreamParser.java:769)
at org.eclipse.jetty.util.MultiPartInputStreamParser.getParts(MultiPartInputStreamParser.java:493)
at org.eclipse.jetty.server.MultiParts$MultiPartsUtilParser.<init>(MultiParts.java:121)
at org.eclipse.jetty.server.Request.newMultiParts(Request.java:2410)
at org.eclipse.jetty.server.Request.getParts(Request.java:2333)
at org.eclipse.jetty.server.Request.getParts(Request.java:2319)
at org.apache.nifi.processors.standard.HandleHttpRequest.onTrigger(HandleHttpRequest.java:575)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
几分钟后,看起来Jetty服务器在每个节点中崩溃,客户端应用程序将开始收到503错误。
任何有关指出配置更改的帮助都会有所帮助。 发射 Vish