当前位置: 首页 > 知识库问答 >
问题:

MicronautRest反应定期悬挂

滕英奕
2023-03-14

我在micronaut(服务A)中实现了一些RESTendpoint。其中一个endpoint使用java调用另一个服务(servicex)。网http。HttpRequest。服务X的响应时间可能较长,例如分钟。一旦这个呼叫进行中,我会定期呼叫服务A(来自curl),每隔一段时间它就会挂起。

我试着用curl调用我的服务。在我看来,一旦服务A调用服务X,它就会持有一个nioEventLoopGroup-1-X线程,等待阻塞操作完成。为endpoint提供服务的后续调用将由不同的nioEventLoopGroup-1-#线程以循环方式处理。但是,一旦阻塞nioEventLoopGroup-1-x发生了变化,请求就会挂起。这种行为是确定性的,从日志中可以看出哪个nio线程正在处理请求,我看到当阻塞的线程轮到时,对服务A的调用就挂起了。然后我向服务a发出一个新请求,该请求将得到完美的响应。如果给定netty线程池大小为5,并且阻止了1个netty处理程序线程,那么我将每5次请求一次服务挂起。

在我看来,Micronaut永远不应该尝试将超文本传输协议请求处理分配给被阻塞但显然正在发生这种情况的线程。

有人对如何克服这个问题有什么建议吗?

共有1个答案

子车才捷
2023-03-14

原来在io.micronaut.http.filter.HttpServerFilter中阻止操作会阻止Netty事件循环,并且会出现我上面描述的症状,即被阻止的netty处理程序将变得无响应。

 类似资料:
  • 问题内容: 我正在尝试使用新的React Lazy和Suspense创建后备加载组件。这很好用,但后备时间仅显示几毫秒。有没有办法增加额外的延迟或最短时间,因此我可以在渲染下一个组件之前显示该组件的动画? 现在懒导入 等待组件: 我可以做这样的事情吗? 问题答案: 函数应该返回对象的承诺,该对象由具有默认导出功能的模块返回。不会返回承诺,也不能那样使用。尽管任意承诺可以: 如果目标是提供 最小的

  • 我正在使用一个基于Symfony的react应用程序,并试图使用react-datepicker模块包含一个datepicker。 我可以创建datepicker对象,但它的样式似乎不正确——当我单击选择日期时,页面顶部只有一个垂直的数字列表(我看到很多人在网上经历过这种情况,通常是因为他们没有导入datepicker css)。 我正在导入react-datepicker.css文件,如果我在浏

  • 我试图通过反应路由器将道具从一个组件传递到另一个组件。当我试图从子组件获取道具时,我得到了这样一条消息。这是我的代码: Tracks.jsx: app.jsx: Album.jsx:

  • 我们正在构建一个react native 0.61.4应用程序,我们希望使用库react native ssl固定。在ios上运行时,ios证书和获取返回错误“已取消”存在问题。 我们遵循了https://www.npmjs.com/package/react-native-ssl-pinning的步骤。我不确定Usage ios中的第二步:(如果您使用证书钉住,请跳过此步骤)公钥钉住不需要额外的

  • 问题内容: 我正在遵循Pluralsight的初学者教程,在表单上将值提交给组件方法,我需要将userName推送到,但出现错误 零件 问题答案: 当您调用时,它被调用,这是您的类(组件)的一个实例,因此它不会给您任何错误,因为方法确实存在于您的类中,但是当您处于方法之下时,您将用来更新其中存在的方法。类(组件)的范围,但是当前您在方法的范围内,因此它会给您带来错误,因为在Scope 下您没有像状

  • 问题内容: React 在promise中没有定义。这是我的代码: 这是错误代码: 问题答案: 可能没有约束力。 如果您可以使用ES6语法,请尝试用箭头函数替换。它会自动绑定: 或手动绑定: