io.netty.channel.unix.Ошибки$NativeIoException: Ошибка адреса чтения (..): Сброс соединения одноранговым узлом

#java #spring

Вопрос:

Я использую spring gateway для пересылки запроса api, теперь я сталкиваюсь со странной проблемой, заключающейся в том, что при обновлении серверной службы api возобновится на очень долгое время. Но серверная служба быстро перезапускается, я пишу серверную службу с помощью rust, перезапуск займет менее 5 секунд, но возобновление работы api займет более 10 минут. Я сбит с толку этой проблемой, моя конфигурация spring gateway forward выглядит так:

 # dolphin music
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true
spring.cloud.gateway.routes[0].id=dolphin-music-service
# forward by ip:port way
spring.cloud.gateway.routes[0].uri=http://10.107.64.246:11014
# forward by service name way
# spring.cloud.gateway.routes[0].uri=lb://
spring.cloud.gateway.routes[0].predicates[0]=Path=/music/**
spring.cloud.gateway.routes[0].filters[0].name=LogFilter2
 

перед возобновлением api, когда я вызываю api, spring gateway покажет журнал ошибок, подобный этому:

   2021-10-09 17:29:19.077 WARN 1 --- [or-http-epoll-1] r.n.h.c.HttpClientConnect : [id: 0x3826e7e1, L:/10.97.196.228:39504 - R:10.107.64.246/10.107.64.246:11014] The connection observed an error

io.netty.channel.unix.Errors$NativeIoException: readAddress(..) failed: Connection reset by peer
 

Я использую команду curl в модуле spring gateway для вызова серверной службы следующим образом:

    # curl http://10.107.64.246:11014/music/playlist/v1/playlist -H "accessToken:1" -H "appId:4" -H "userId:16"|jq "."
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   899  100   899    0     0  30032      0 --:--:-- --:--:-- --:--:-- 31000
{
  "result": [
    {
      "id": 2,
      "creator": {
        "id": 0,
        "name": "test",
        "avatarUrl": "https://p1.music.126.net/Ue_B2LOqrDupzKLRcxOlxQ==/109951165445776620.jpg",
        "nickname": "Xiaoqiang Jiang"
      },
      "name": "favirate",
      "coverUrl": "https://p1.music.126.net/Ue_B2LOqrDupzKLRcxOlxQ==/109951165445776620.jpg",
      "description": null,
      "subscribed": true,
      "subscribedCount": 0,
      "commentCount": 0,
      "shareCount": 0,
      "playCount": 0,
      "source": 3,
      "trackUpdateTime": 1626501600000,
      "trackCount": 0
    },
    {
      "id": 1,
      "creator": {
        "id": 0,
        "name": "test",
        "avatarUrl": "https://p1.music.126.net/Ue_B2LOqrDupzKLRcxOlxQ==/109951165445776620.jpg",
        "nickname": "Xiaoqiang Jiang"
      },
      "name": "discovery",
      "coverUrl": "https://p1.music.126.net/Ue_B2LOqrDupzKLRcxOlxQ==/109951165445776620.jpg",
      "description": null,
      "subscribed": true,
      "subscribedCount": 0,
      "commentCount": 0,
      "shareCount": 0,
      "playCount": 0,
      "source": 3,
      "trackUpdateTime": 1626501600000,
      "trackCount": 143
    }
  ],
  "statusCode": "200",
  "resultCode": "200"
}
 

показывает, что серверная служба была запущена прямо сейчас, почему шлюз spring сообщает об ошибке сброса соединения, несмотря на то, что серверная служба была запущена? что я должен сделать, чтобы решить эту проблему?