【问题标题】:ChannelClosedException - Upstream Address: Not AvailableChannelClosedException - 上游地址:不可用
【发布时间】:2022-04-16 05:45:00
【问题描述】:

我们的 scala/thrift 服务正在使用带有 java8 的 twitter finagle 2.12-18.10.0。该服务对于单个请求或少数几个请求都可以正常工作,但是当我们尝试用很多请求访问该服务时,我们会收到很多请求

'com.twitter.finagle.ChannelClosedException: ChannelException at remote address: hostname:9091 from service: calcservice-thrift. Remote Info: Upstream Address: Not Available, Upstream id: Not Available, 
    at org.apache.thrift.TApplicationException.readFrom(TApplicationException.java:131)

访问服务器的示例客户端(间歇性失败)

log.info("started");
     IntStream.range(0,500)
             .parallel()
             .forEach(i->{
                 try {
                     //remote call to finagle service
                 }
                 catch(Exception e){
                     log.error("error " ,e);
                 }
             });
     log.info("end");

为什么服务器会随机关闭频道。可能的解决方法是什么

【问题讨论】:

    标签: scala netty finagle twitter-finagle


    【解决方案1】:

    我的猜测是,您的 finagle 服务器配置并非旨在并行处理如此多的请求,其中许多请求只是没有得到答复或返回错误消息。 我没有使用过这么多服务员的经验,但是如果您向该服务器并行触发 500 个客户端请求,您可以尝试将其设置为 501 以进行测试设置。

    ThriftMux.Server()
      .withAdmissionControl
      .concurrencyLimit(
         maxConcurrentRequests = 5
         maxWaiters = 501 
      )
      ...
    
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多