Maison >Java >javaDidacticiel >Quelle est la raison pour laquelle SpringBoot démarre lentement ?

Quelle est la raison pour laquelle SpringBoot démarre lentement ?

WBOY
WBOYavant
2023-05-17 11:01:264018parcourir

    La raison pour laquelle SpringBoot démarre lentement

    L'architecture de Spring Boot est si courante que si vous ne la maîtrisez pas, vous êtes parfois gêné de dire que vous travaillez en Java. Mais le feu redevient le feu, et il y a quelques petits problèmes auxquels nous devons prêter attention.

    S'il s'agit d'un seul projet et qu'il n'y a aucune exigence en termes de vitesse de démarrage, veuillez l'ignorer.

    Passons au sujet, dans quelles circonstances le démarrage du projet Spring Boot va-t-il ralentir ?

    Prérequis

    La configuration matérielle de la machine pour démarrer le projet ne peut pas être retardée, sinon si vous dites que le projet démarre lentement, le projet démarrera quand même. l'impression que la machine n'est pas bonne...

    Comme le réseau, la taille de la mémoire, le nombre de cœurs de processeur, etc. Il n'est pas nécessaire qu'il soit trop élevé, au moins cela devrait suffire

    Mettez de côté divers facteurs humains, comme des temps de connexion longs, un démarrage lent des autres composants entraînant une attente...

    Raison 1

    Il y a trop de configurations inutiles utilisées dans le projet. Par exemple, dans le Web le plus simple, vous avez également ajouté diverses autres configurations Maven et les avez configurées dans le projet (ce n'est qu'un exemple exagéré, ces configurations ne sont pas nécessaires), puis le projet lui-même ne le comprend pas depuis que vous l'avez configuré. , puis chargez-le.

    Un prend 0,1 seconde, 10 prend 1 seconde, 100 prend 10 secondes... et ainsi de suite, c'est la chose la plus simple à comprendre.

    Raison 2

    Configuration automatique du Spring Boot. Bien que la configuration automatique soit un point fort de Spring Boot, c'est également un inconvénient qui entraîne des temps de démarrage lents.

    Pas question, généralement quelque chose qui est facile à utiliser et doté de fonctions complètes aura toujours des défauts à certains endroits.

    Il a été mentionné ci-dessus qu'il existe de nombreuses configurations inutiles, mais ce que je veux dire ici, c'est que Spring Boot a trop de choses assemblées par elle-même.

    Vous pouvez voir que les fichiers spring.factories sont stockés dans les packages jar pertinents de Spring Boot. Lorsque vous regardez à l'intérieur, vous pouvez voir que la plupart d'entre eux contiennent de nombreuses classes. assemblage automatique de démarrage à ressort.

    Mais si vous regardez attentivement, vous constaterez qu'il existe en fait de nombreuses catégories que vous ne pouvez pas utiliser du tout.

    Mais que pouvez-vous faire ? Que vous l'utilisiez ou non, au moins il le vérifiera pour vous. N'est-ce pas un endroit pour passer du temps ?

    Raison 3

    Le projet n'est pas assez rationalisé. Le concept de microservices est très populaire maintenant. Je pense que sa signification fondamentale est la simplicité et la simplicité, et la plupart des endroits qui doivent mettre l'accent sur la vitesse de démarrage sont principalement des projets de microservices.

    Dans un projet de microservice, il est préférable de le démarrer dans les 10 secondes. Mais la plupart d’entre eux n’y parviennent pas parce que les projets ne sont pas suffisamment détaillés.

    Qu'une interface soit plus rapide à démarrer, 10 ou plus, la réponse est évidente. De nombreux projets sont vastes et complets. Ce qu'on appelle grand et complet signifie qu'il existe de nombreuses fonctions, des configurations complètes, diverses configurations extensibles, etc. Ce n'est peut-être pas complet, mais qu'est-ce que cela signifie. Peu importe qu'ils soient utiles ou non. Au moins, il y aura beaucoup plus de fichiers de classe qui devront être compilés et chargés. Vous avez dit que vous souhaitiez qu'un tel projet démarre rapidement, comment peut-il démarrer rapidement ?

    Solution

    • Vérifiez s'il y a trop de dépendances inutiles dans maven

    • C'est plus compliqué. Utilisez le débogage du plug-in spring-boot-maven pour démarrer, vérifiez quelles configurations sont utilisées dans le projet et. quelles configurations sont inutiles, puis indiquez directement dans la classe de démarrage que seules les classes utilisées sont démarrées, supprimez l'annotation @SpringBootApplication, remplissez manuellement les annotations @Configuration et @Import, et ajoutez ces classes configurées dans l'annotation @Import.

    • Remplacez certaines dépendances par une configuration plus rapide. Par exemple, vous utilisez un pool de connexions à la base de données A, qui a des fonctions complètes et de nombreuses configurations, mais est plus lent. Cependant, en fait, le pool de connexions B peut également répondre aux besoins du projet, mais a relativement peu de fonctions, il y a donc moins de configurations et plus rapide. démarrage. Avez-vous besoin Vous devez en choisir un entre A et B.

    • Diviser des projets plus rationalisés pour les exécuter de manière indépendante. Grand et complet signifie plus mais pas raffiné, léger et simple signifie moins mais compétent. Leur rapidité est évidente.

    Comment améliorer la vitesse de démarrage de l'application SpringBoot

    Réduire la portée des classes d'analyse @ComponentScan et @SpringBootApplication

    2 Désactivez la surveillance JMX de Spring Boot et définissez spring.jmx.enabled=false

    3. Paramètres JVM - noverify, ne vérifie pas les classes

    4. Retarder le chargement des beans qui n'ont pas besoin d'être chargés au démarrage

    5 Utilisez le chargement paresseux global de Spring Boot

    6. Essayez de ne pas utiliser d'annotations pour les aspects AOP. entraînera l'analyse au démarrage de toutes les méthodes

    7. Désactivez certaines fonctions de surveillance des points de terminaison

    8 Excluez les fichiers jar dépendants redondants du projet

    9 Lorsque swagger analyse l'interface, spécifiez d'analyser uniquement les classes sous un certain chemin

    . 10. Analyse de l'interface client Feign Affinez la portée de l'analyse des packages

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer