Spring 启动阶段接口 500 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
telnetning
V2EX    Java

Spring 启动阶段接口 500

  •  
  •   telnetning 2021-03-17 11:32:58 +08:00 3264 次点击
    这是一个创建于 1669 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Spring 新人,请教下这个问题,搜索相关问题只搜索到 dubbo 延迟暴露 相关的,但是这个项目不是 dubbo 的,就是一般的 Spring Boot 应用。

    问题是,在 Spring 启动阶段,会有大概 10s 的端口已监听但是访问 500 的情况。

    具体是:

    • 0-10s,Spring 还未监听端口
    • 10-20s,Spring 已经监听端口,但是整个应用未加启动好,访问接口 500
    • 20s 以后,端口访问正常

    请教下大家,这个问题应该如何解决呢,正常的理想情况是,在整个应用启动完整之后,才监听端口,保证监听即可用。

    22 条回复    2021-03-19 10:39:36 +08:00
    huifer
        1
    huifer  
       2021-03-17 11:34:46 +08:00
    Bean 实例化顺序
    chendy
        2
    chendy  
       2021-03-17 11:44:20 +08:00
    你确定是因为未启动好报的 500 么?应用的报错是什么?
    启动 20s 多少慢了点吧……
    telnetning
        3
    telnetning  
    OP
       2021-03-17 11:53:07 +08:00
    @chendy 应该是的,中间报错的请求,是 getBean 的结果为 null
    telnetning
        4
    telnetning  
    OP
       2021-03-17 11:54:50 +08:00
    @huifer 多谢,我了解下。是需要让对应的 Bean 在 Web 容器之前加载完成吗?
    Kasumi20
        5
    Kasumi20  
       2021-03-17 12:44:04 +08:00
    Spring 监听端口吗?是 Servlet 容器在监听吧。。。
    huifer
        6
    huifer  
       2021-03-17 12:50:04 +08:00
    @telnetning 不如放出代码在看看,getBean 为 null 就说明 bean 没有加载
    scxiazi
        7
    scxiazi  
       2021-03-17 12:51:56 +08:00   1
    你倒是把报错信息放出来
    telnetning
        8
    telnetning  
    OP
       2021-03-17 14:45:43 +08:00
    @Kasumi20 嗯嗯,是的
    telnetning
        9
    telnetning  
    OP
       2021-03-17 14:46:04 +08:00
    @scxiazi 公司网络限制,贴不出来。。。
    telnetning
        10
    telnetning  
    OP
       2021-03-17 14:46:32 +08:00
    @huifer 公司网络限制,贴不出来。。。
    yRebelHero
        11
    yRebelHero  
       2021-03-17 16:31:46 +08:00
    另外的端口监听吗?试试在 Application 这个类 implements CommandLineRunner,再重写 run 方法新建一个线程来监听。我之前也遇到过类似的情况,就是需要监听另外的端口,但是这个端口始终没法监听到,具体报没报错忘了,但是我是这么解决的。
    chenqh
        12
    chenqh  
       2021-03-17 16:48:27 +08:00
    java 启动这么慢的吗?
    telnetning
        13
    telnetning  
    OP
       2021-03-17 16:55:15 +08:00
    @chenqh 我一直以为 Spring 应用就是这么慢来着。。。
    chenqh
        14
    chenqh  
       2021-03-17 17:01:57 +08:00
    @telnetning 我用 py,启动不到 1s 钟的呀,可能是我用轻型框架的原因
    qwerthhusn
        15
    qwerthhusn  
       2021-03-17 17:34:57 +08:00
    报 500 看日志堆栈啊
    arvinsilm
        16
    arvinsilm  
       2021-03-17 18:06:27 +08:00
    加个 filter 之类的东西,系统没启动完成返回统一错误信息
    qinxi
        17
    qinxi  
       2021-03-17 18:10:54 +08:00
    @chenqh #12 解释型语言都快. 没运行到的 py 代码甚至不知道能不能跑
    chenqh
        18
    chenqh  
       2021-03-17 18:33:57 +08:00
    @qinxi 原来是这个原因的吗,嗯嗯,应该是这个原因吧
    bianjp
        19
    bianjp  
    PRO
       2021-03-17 21:03:34 +08:00
    先使用 Spring Boot Actuator 的健康检查接口检查应用状态,应用就绪后再开放给外部访问。

    https://docs.spring.io/spring-boot/docs/2.4.3/reference/htmlsingle/#boot-features-application-availability-managing
    jimrok
        20
    jimrok  
       2021-03-17 22:07:25 +08:00
    先初始化 bean,再启动 tomcat
    telnetning
        21
    telnetning  
    OP
       2021-03-19 10:31:38 +08:00
    @chenqh Spring 启动肯定比 py 应用启动慢多了的
    telnetning
        22
    telnetning  
    OP
       2021-03-19 10:39:36 +08:00
    @bianjp 是指让网关或者负载均衡器在开放应用给外部之前先检查接口应用状态?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4943 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 09:43 PVG 17:43 LAX 02:43 JFK 05:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86