SpringBoot重啟后,第一次請求接口請求慢的問題及解決
1、DispatcherServlet默認是懶加載
即工程啟動的時候,Applicationcontext會將所有的bean加載到容器,但是DispatcherServlet是沒有加載的,只有第一次訪問的時候才會加載
場景一
DispatcherServlet懶加載情況,啟動的時候如下圖
只有一個ApplicationContext的初始化,此時并沒有DispatcherServlet的初始化,接下來我們進行一次接口調(diào)用
如下圖:
發(fā)現(xiàn)在進行接口調(diào)用的時候,才初始化了DispatcherServlet,接下來我們再進行一次接口調(diào)用
如下圖:
此時,直接進行方法的調(diào)用和返回。
場景二
spring.mvc.servlet.load-on-startup=1
DispatcherServlet關閉懶加載,啟動的時候如下圖:
同時完成了ApplicationContext和DispatcherServlet的初始化,此時再進行接口調(diào)用,會發(fā)現(xiàn)即便是第一次調(diào)用,也直接進入了方法
如下圖:
通過上述測試可知,通過配置 spring.mvc.servlet.load-on-startup=1 關閉DispatcherServlet懶加載
使第一次接口訪問的時候直接進行方法的調(diào)用,提高速度
2、隨機數(shù)生成慢的原因和解決方案
Java隨機數(shù)生成依賴熵源(Entropy Source)
默認的阻塞型的 /dev/random熵源可能導致阻塞
而換一個非阻塞的 /dev/urandom的熵源就可以了
解決方法
- 臨時、方便
以這種方式運行jar包
java -Djava.security.egd=file:/dev/./urandom -jar XXX.jar XXX
- 永久
進入你的JAVA_HOME的jre目錄下找到并vim編輯這個文件:
$JAVA_HOME/jre/lib/security/java.security
- 找到:
securerandom.source=file:/dev/random 這一行
- 改之前:
securerandom.source=file:/dev/random
- 改為:
securerandom.source=file:/dev/urandom
3、進行異步處理
提高整體的響應時間
4、加入緩存
例如熱點數(shù)據(jù)的預加載等,提高響應時間
5、工程啟動之后
就進行一次訪問
@Slf4j @Configuration public class LoadDatabase { @Bean CommandLineRunner initController(RestTemplate restTemplate) { return args -> { log.info("REQUEST " + restTemplate.execute("http://127.0.0.1:9999/t1", HttpMethod.GET, null, null)); }; } }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決在啟動eclipse的tomcat進行訪問時出現(xiàn)404問題的方法
這篇文章主要介紹了解決在啟動eclipse的tomcat進行訪問時出現(xiàn)404問題的方法,感興趣的小伙伴們可以參考一下2016-04-04springboot結(jié)合mybatis-plus快速生成項目模板的方法
Mybatis-Plus是一個 Mybatis 的增強工具,在 Mybatis 的基礎上只做增強不做改變,為簡化開發(fā)、提高效率而生,接下來通過本文給大家分享springboot結(jié)合mybatis-plus快速生成項目模板的方法,感興趣的朋友一起看看吧2021-06-06SpringBoot啟動報錯屬性循環(huán)依賴報錯問題的解決
這篇文章主要介紹了SpringBoot啟動報錯屬性循環(huán)依賴報錯問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05Struts1教程之ActionMapping_動力節(jié)點Java學院整理
這篇文章主要介紹了Struts1教程之ActionMapping,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09詳解JAVA使用Comparator接口實現(xiàn)自定義排序
這篇文章主要介紹了JAVA使用Comparator接口實現(xiàn)自定義排序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-03-03