1 votes

Comment améliorer les performances d'un serveur de construction Java ?

Nous mettons en place un nouveau serveur pour l'intégration. Le serveur d'intégration original peut terminer le "mvn install" en 3 minutes dans une boîte Linux. Maintenant, en passant à un serveur Windows 2012 sur VM, il est passé à 9 minutes. La partie "mvn test" seule coûte 7 minutes. Beaucoup de ces tests suivent le même schéma : 1. démarrer une nouvelle JVM 2. charger les données de test à partir de fichiers/feuilles de calcul Excel dans une base de données en mémoire 3. Exécuter des requêtes dans cette base de données, valider les résultats

À votre avis, comment pouvons-nous améliorer les performances de cette VM ? Le serveur possède déjà 16 Go de mémoire, 256 Go d'espace, 8 vCPU.

Et en général, en tant que serveur de construction, la plupart des travaux sont comme ça : 1. Lire les milliers de fichiers de l'espace de travail, 2. Compiler le code source ci-dessus, 3. Générer des milliers de fichiers .class. 4. Jar/Zip ces milliers de fichiers. 5. Copiez les fichiers jars/zips vers un autre endroit.

Il semble que la charge de travail soit plus importante sur le CPU et les E/S du disque que sur la RAM, n'est-ce pas ?

Merci Jirong

0 votes

Pour autant que je sache, javac ne peut fonctionner qu'en mode monotâche... donc rien de comparable à ce que fait gcc avec le commutateur -j. Il ne reste donc que les goulets d'étranglement habituels, l'entrée/sortie du disque, les performances du processeur et de nombreux autres goulets d'étranglement, à savoir les goulets d'étranglement liés à l'utilisation de l'ordinateur. rapide ram. Les SSD aideront, ainsi qu'une connexion réseau rapide si vous faites un nouveau checkout pour chaque build. Par ailleurs, pourquoi êtes-vous passé à Windows pour votre serveur de construction ? Windows a beaucoup plus de "trucs" en arrière-plan qui peuvent affecter les performances de vos builds. votre boîte linux était probablement lean-n-mean.

2voto

Sam Points 597

Les performances de notre serveur de construction ont été améliorées en augmentant les performances du sous-système de disque. Nous utilisons maintenant 4 disques SSD rapides en RAID 10 matériel.

Pour confirmer que le disque est le goulot d'étranglement de vos performances, observez les entrées-sorties du sous-système disque par rapport à vos valeurs théoriques et regardez la latence, car lorsque la latence est constamment élevée, vous avez un problème.

Sous Windows, vous pouvez utiliser Perfmon ou Windows Resource Monitor. Sous Linux, utilisez iostat. Le client VMWare vshpere possède des graphiques dans l'onglet performance pour le sous-système de disque.

1 votes

+1. Je ne fais pas de jave mais du C#/C++ - c'est la même chose. Les serveurs de construction sont comme les bases de données - les sous-systèmes LOVE IO et aspirent volontiers tout le budget que vous y consacrez. Les disques SSD sont presque indispensables en raison de la faible latence qui est stable avec les accès parallèles. Et l'IO est normalement aussi le point faible de toute configuration de virtualisation ;)

0 votes

+1 : J'insiste sur la latence du disque. Quelles que soient les limites théoriques de votre système, si une lecture ou une écriture de 4K prend plus de 10 ms, vous avez atteint le seuil de latence du disque. pratique de votre système de disque.

0 votes

@surfasb, Merci pour l'information. Je sais comment lire l'utilisation du CPU et de la RAM, mais je ne sais pas comment interpréter les informations sur les entrées/sorties du disque dans le moniteur de performance de Windows. Je suis en train d'étudier la question. Y a-t-il un moyen simple d'évaluer l'entrée/sortie du disque ? Par exemple, comment puis-je faire votre test "la lecture ou l'écriture d'un seul 4K prend plus de 10ms" ?

1voto

Samat Jain Points 165

La réponse à votre question peut être généralisée à peu près comme suit tout situation :

  1. Commencez à collecter les métriques (RAM, IO, CPU, réseau, etc.)
  2. Appliquer une charge au système
  3. Analyser les mesures pour identifier les goulots d'étranglement.
  4. Atténuer les goulets d'étranglement
  5. GOTO 1

0 votes

Merci pour vos informations. Le problème, c'est que l'activité "Analyser les mesures pour identifier les goulets d'étranglement" nécessite des connaissances.

0 votes

@user2784896 Tout comme la programmation. Si vous n'êtes pas prêt à apprendre les bases, il y a toujours un McDonalds qui attend un serveur de hamburgers. Je n'ai pas l'intention de faire de la publicité, mais j'ai l'impression qu'il y a un problème avec le fait qu'il n'y a pas d'autres moyens de communication.

1 votes

En effet, c'est le cas. Cela semble être quelque chose que vous devriez rechercher, essayer, et si vous avez des questions, revenez et posez une question bien ciblée et bien documentée à ce sujet.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X