L'auto-bench sur le site
L'auto-bench benchmarke votre serveur sans vous : selon un calendrier ou à la demande, VoxelBench envoie un robot qui rejoint le serveur comme un joueur et fait lancer le benchmark par le plugin. Cette page couvre le côté site : cibles, comptes Microsoft, calendriers, lancements, quotas, runs et erreurs.
Déroulement d'un run
- Un run arrive à son heure, ou vous cliquez sur Lancer maintenant : VoxelBench met un job en file d'attente.
- Un agent de banc prend le job, et son robot se connecte à l'adresse vérifiée de votre serveur, comme un joueur Minecraft: Java Edition.
- Le robot tape
/vbautobotsuivi d'un code à usage unique et du mode : c'est la seule commande par laquelle il lance un run. Le plugin demande à voxelbench.com si ce code est valable pour ce serveur, et reçoit ce qu'il doit lancer : mode, test ou profil, chauffe, nombre de runs. - Le plugin exécute le benchmark et rend compte de sa progression au robot. Chaque run mesuré envoie son rapport à voxelbench.com, rattaché au job.
- Le robot se déconnecte.
Ce qui se passe sur le serveur, et ce dont le serveur a besoin, est décrit dans Auto-bench, dans la documentation du plugin.
Avant de commencer
- Une offre qui inclut l'auto-bench : Pro, Enterprise, ou un compte hébergeur vérifié par VoxelBench. Avec l'offre Gratuit, la page Auto-bench ne propose que de changer d'offre.
- Un serveur lié et vérifié. Seuls les serveurs vérifiés peuvent recevoir une cible, et le robot se connecte à l'adresse que vous avez vérifiée (voir Lier et vérifier un serveur). Lier de nouveau le serveur lui retire sa vérification : vérifiez-le ensuite une nouvelle fois.
- Sur le serveur : le jar VoxelBench officiel et à jour, une sortie HTTPS vers voxelbench.com, et un passage pour le robot à travers liste blanche, mode en ligne, plugins anti-bot et proxys (voir Laisser entrer le robot). Un monde de benchmark épinglé est vivement recommandé (voir Où tournent les runs).
Un run d'auto-bench charge le serveur comme n'importe quel benchmark : les joueurs connectés le sentiront. Planifiez-le aux heures creuses.
Comptes Microsoft
La façon dont le robot se connecte dépend de votre serveur :
- Mode hors ligne (
online-mode=false) : aucun compte n'est nécessaire. Le robot se connecte sous un nom généré qui commence parvb_. Choisissez Offline (serveur cracké) comme mode d'authentification de la cible. - Mode en ligne : le robot doit se connecter avec un vrai compte Minecraft: Java Edition. Vous en prêtez un dans la carte Comptes Microsoft de la page Auto-bench, puis choisissez Compte Microsoft BYO comme mode d'authentification de la cible.
Pour ajouter un compte, cliquez sur Ajouter un compte Microsoft. Une fenêtre vous donne une adresse Microsoft et un code court : ouvrez l'adresse, saisissez le code et connectez-vous avec le compte Microsoft qui possède Minecraft: Java Edition. La page détecte la connexion d'elle-même. Un compte sans Java Edition est refusé.
VoxelBench ne voit jamais votre mot de passe : vous vous connectez sur la page même de Microsoft. Il conserve le jeton de connexion que renvoie Microsoft, stocké chiffré, et ne le prête à l'agent de banc que pour les runs qui utilisent ce compte. L'avertissement de la page vaut ici : Mojang peut suspendre les comptes utilisés par des clients automatisés, alors n'ajoutez qu'un compte que vous êtes prêt à perdre.
Chaque compte affiche son état : disponible, réservé (en cours d'utilisation par un run), ban ou invalide. Après un échec de connexion (auth_failed), le compte est marqué banni et n'est plus utilisé tant que vous ne l'avez pas retiré puis ajouté de nouveau. Retirer un compte supprime ses identifiants stockés ; c'est refusé tant qu'une cible l'utilise encore.
Créer une cible
Une cible (« target » à l'écran), c'est un serveur, une façon de le benchmarker et un calendrier. Sur la page Auto-bench, cliquez sur Nouveau target :
| Champ | Quoi y mettre |
|---|---|
| Serveur synchronisé | L'un de vos serveurs vérifiés. Le robot se connecte à son adresse et à son port vérifiés |
| Nom affiché | 100 caractères au plus |
| Planification | Un préréglage ; tout autre calendrier se règle ensuite en modifiant la cible (voir Planification) |
| Version Minecraft | Laissez la détection automatique, ou imposez une version quand le robot ne connaît pas celle qu'annonce votre serveur. Indiquez la version de Minecraft, pas le numéro de build de votre logiciel serveur. La page affiche la dernière version prise en charge par l'auto-bench, et la liste complète |
| Mode de bench | Benchmark standard, Stress limit, Test unitaire ou Profil personnalisé |
| Arguments de bench | Pour Test unitaire, obligatoire : l'identifiant du test, puis ses paramètres dans l'ordre où /bench test les prend, par exemple chunkLoading 500 ou disk 4 8 512M 3 (voir Paramètres des tests). 256 caractères au plus |
| Nom du profil personnalisé | Pour Profil personnalisé, obligatoire : le nom du fichier du profil sans .yml (lettres, chiffres, - et _, 64 caractères au plus). Le profil doit se trouver sur le serveur, dans plugins/VoxelBench/custom_benchmarks/ |
| Passe de warmup | D'abord un benchmark complet dont les résultats sont écartés, pour chauffer le serveur ; le job dure d'autant plus longtemps. Ignorée en mode Test unitaire |
| Runs | Le nombre de runs mesurés par job, chacun envoyé comme un rapport distinct. En Benchmark standard seulement ; jusqu'à 10 en Pro, 20 en Enterprise et pour les comptes hébergeurs. Le job entier, chauffe comprise, doit se terminer en deux heures |
| Mode d'authentification | Offline (serveur cracké) ou Compte Microsoft BYO (voir Comptes Microsoft) |
| Compte Microsoft | Avec Compte Microsoft BYO : l'un de vos comptes disponibles |
| Notes | Facultatives, 1 024 caractères au plus |
Une cible ne se crée que depuis le tableau de bord : l'API et les agents ne le peuvent pas, parce qu'une cible engage un compte Microsoft que vous prêtez.
Modifier et supprimer
Modifier (sur la ligne de la cible) change le nom, le calendrier (un préréglage ou n'importe quelle expression cron), la version de Minecraft, le mode, les arguments, la chauffe et le nombre de runs. Le serveur et le mode d'authentification ne se modifient pas : créez une nouvelle cible pour les changer. L'interrupteur Activé suspend et reprend une cible. Supprimer l'efface définitivement, depuis le tableau de bord seulement.
Planification
Les préréglages sont Tous les jours à 02:00 UTC (par défaut), Toutes les 6 heures, Deux fois par jour (02h/14h UTC), Hebdomadaire (dimanche 02:00 UTC) et Mensuel (le 1er à 02:00 UTC). En modifiant une cible, vous pouvez aussi saisir n'importe quelle expression cron à cinq champs — minute, heure, jour du mois, mois, jour de la semaine — toujours en UTC, avec *, */N, des listes (2,14) et des plages (1-5).
- Une fois par heure au plus. Un calendrier plus fréquent est refusé à l'enregistrement.
- Vers l'heure dite, pas à la minute près. Chaque run est décalé au hasard d'au plus 20 % de l'intervalle, 30 minutes au maximum, en avance ou en retard, pour que personne ne puisse régler un serveur en vue d'une heure connue. Le planificateur cherche les runs dus toutes les 5 minutes.
- Un run à la fois. Si le run précédent de la cible tourne encore quand le suivant est dû, le nouveau attend que la cible soit libre.
- Dans la limite du quota. Quand votre quota quotidien de runs est épuisé, un run planifié est sauté et la cible passe à son heure suivante.
Un jeton d'API ou un agent branché qui porte la portée auto-bench:write peut changer le calendrier, le nom et les notes d'une cible, et l'activer ou la désactiver (voir API et jetons).
Lancer et annuler
Lancer maintenant, sur la ligne de la cible, met un run en file d'attente aussitôt ; un agent de banc le prend peu après.
- Un seul run en cours par cible. Tant qu'un run attend ou tourne, un nouveau lancement est refusé (par l'API :
already_running, avec l'identifiant du run en cours). - 60 secondes au moins entre deux lancements de la même cible.
- Le quota de runs doit couvrir le nombre de runs de la cible.
Annuler, dans le panneau Runs en direct, demande au robot de s'arrêter : il dit au plugin d'arrêter le run, ce que le plugin fait aussitôt, puis se déconnecte. Le run affiche d'abord cancelling, puis cancelled. Si l'agent ne confirme pas dans les 5 minutes, le run est clos quand même (cancel_timeout). Un run annulé ne compte jamais comme un échec de la cible, mais il reste compté dans le quota de runs.
Sur le serveur, /bench stop arrête aussi un run d'auto-bench ; VoxelBench l'enregistre comme arrêté sur le serveur (aborted_in_game), pas comme un échec. Un run d'un job à plusieurs runs qui se termine sans son rapport, en revanche, n'est pas un arrêt : le plugin abandonne les runs restants, et VoxelBench enregistre un échec de la cible (agent_crash, voir Autres erreurs).
Quotas
| Pro | Hébergeur | Enterprise | |
|---|---|---|---|
| Cibles | 3 | 5 | 10 |
| Runs par 24 heures | 10 | 30 | 100 |
| Runs par job | 10 | 20 | 20 |
| Comptes Microsoft | 2 | 10 | 5 |
L'offre Gratuit n'inclut pas l'auto-bench.
Le quota de runs compte chaque job créé au cours des 24 dernières heures avec son nombre de runs (la chauffe ne compte pas), qu'il ait réussi, échoué ou été annulé, runs planifiés compris. C'est une fenêtre glissante : les runs redeviennent disponibles à mesure que les précédents dépassent 24 heures. La page Auto-bench indique combien de runs vous avez utilisés sur les 24 dernières heures.
Suivre les runs
La page Auto-bench montre :
- Runs en direct, mis à jour toutes les 5 secondes : chaque run en cours, avec son numéro (Run 2/5), un badge warmup pendant la chauffe, le test en cours et le bouton Annuler ;
- Runs récents : les runs terminés, échoués et en timeout, avec leur statut, leur cible, leur mode, leur score, leur durée et leur début, et un lien vers le rapport ou le résultat du test. Cliquez sur un run échoué pour voir ce qui s'est passé, ce qu'il faut faire, et le message brut de l'agent ;
- dans le tableau des cibles : le Prochain run, le Dernier succès, et les Échecs consécutifs, avec la dernière erreur.
Les mêmes runs se lisent par l'API (GET /api/v1/auto-bench/jobs), chaque échec avec la même explication qu'au tableau de bord, en anglais.
États d'un run
| État | Signification |
|---|---|
queued | En attente qu'un agent de banc le prenne |
claimed | Un agent l'a pris et se connecte à votre serveur |
connecting, online | Le robot se connecte, puis, connecté, attend que le plugin confirme son code |
benching | Le benchmark tourne |
cancelling | Un arrêt a été demandé ; en attente de la confirmation de l'agent |
completed | Les résultats sont arrivés |
failed | Le run s'est terminé sur une erreur (voir plus bas) |
timeout | Le run a atteint son échéance sans se terminer (expired) |
cancelled | Arrêté depuis le tableau de bord ou par l'API |
Échecs et mise en pause automatique
Un run en échec (statut failed) vous envoie une notification avec le nombre d'échecs consécutifs. Après 5 échecs consécutifs, la cible est désactivée automatiquement, et vous en êtes averti. La réactiver remet le compte à zéro, tout comme un run réussi.
Certaines fins ne sont pas du fait du serveur et ne sont pas comptées : un run interrompu par une mise à jour de VoxelBench (agent_shutdown), un run arrêté sur le serveur par /bench stop (aborted_in_game), et les annulations, y compris celle d'un run de certification que la modération de VoxelBench a reprogrammé ou annulé (rescheduled, user_cancelled). Tout autre échec compte, y compris celui que cause un réglage de la cible, un identifiant de test erroné par exemple, et un job à plusieurs runs abandonné parce que l'un de ses runs a échoué.
Erreurs et que faire
Un run en échec affiche un libellé, son code, une explication et ce qu'il faut faire. Voici les codes que vous rencontrerez. Ceux qui viennent du plugin figurent aussi, avec leurs remèdes, dans Auto-bench, dans la documentation du plugin.
Avant que le plugin réponde
| Code | Ce qui s'est passé | Que faire |
|---|---|---|
connection_refused | Le robot n'a pas pu se connecter, n'est pas arrivé dans le monde en 2 minutes, ou a perdu la connexion pendant le run | Vérifiez que le serveur tourne et qu'il est joignable depuis Internet à son adresse et à son port vérifiés ; laissez passer le robot à travers pare-feu et filtrages géographiques |
kicked_on_join | Le serveur a expulsé le robot ; le motif figure dans le message brut | Liste blanche, plugin anti-bot, serveur plein, ou serveur en mode en ligne avec un robot en mode hors ligne |
server_starting | Le serveur dormait et démarrait à l'arrivée du robot ; l'agent a attendu et réessayé, mais le démarrage n'a pas abouti à temps | Relancez une fois le serveur entièrement démarré, ou gardez-le éveillé à l'heure prévue |
auth_failed | Le robot n'a pas pu se connecter avec le compte Microsoft | Vérifiez que le compte possède toujours Java Edition et qu'il n'est pas suspendu, puis retirez-le et ajoutez-le de nouveau : d'ici là, il reste marqué banni |
byo_lease_failed | Avant de se connecter, l'agent n'a pas pu obtenir la connexion du compte Microsoft de la cible : le compte est marqué invalide ou banni, Microsoft a refusé de renouveler sa connexion, il ne possède plus Java Edition, ou ses identifiants enregistrés n'ont pas pu être lus. Le message brut donne la réponse de voxelbench.com. Le robot ne s'est jamais connecté | Si le message brut cite account_unusable, auth_chain_failed ou no_java_edition, connectez-vous au compte, vérifiez qu'il possède toujours Java Edition, puis retirez-le et ajoutez-le de nouveau. Toute autre réponse vient de VoxelBench : signalez-la |
version_mismatch | Le robot ne connaît pas la version de Minecraft qu'annonce votre serveur | Réglez Version Minecraft sur la cible avec une version de la liste prise en charge |
no_plugin_response | Le robot est arrivé dans le monde et a tapé /vbautobot, mais aucune réponse de VoxelBench ne lui est parvenue en 10 minutes. VoxelBench répond à cette commande immédiatement, avant toute chose : ce silence signifie donc que la commande n'est jamais arrivée jusqu'à VoxelBench, ou que sa réponse n'est jamais arrivée jusqu'au robot | Vérifiez que VoxelBench est installé et activé sur le serveur où le robot arrive réellement (pas un lobby derrière un proxy), qu'aucun plugin ne bloque ni ne réécrit /vbautobot (filtres de commandes, plugins de connexion ou de captcha), et qu'aucun plugin de chat ne cache au robot les messages de VoxelBench. Le robot n'a besoin d'aucune permission pour lancer /vbautobot |
Sur le serveur
| Code | Ce qui s'est passé | Que faire |
|---|---|---|
bench_timeout | Le plugin a démarré, puis n'a plus rien dit pendant 10 minutes (il signale le début et la fin de chaque test), ou le job a atteint sa durée maximale de deux heures, chauffe et runs compris | Cherchez une erreur dans la console du serveur à ce moment-là, et assurez-vous qu'aucun plugin ne cache au robot les messages de VoxelBench. Si le job est simplement trop long, réduisez son nombre de runs ou retirez la chauffe |
plugin_test_already_running | Un benchmark, un stress limit ou un test tournait déjà à l'arrivée du robot | Évitez de lancer vos propres benchmarks à l'heure prévue ; le run suivant suit le calendrier |
plugin_benchmark_world_unavailable | Un job Test unitaire sur un test qui écrit dans le monde, sans monde épinglé ni monde temporaire possible (toujours le cas sous Folia sans monde épinglé). Rien n'a tourné | Épinglez un monde chargé au démarrage avec /bench world set <monde> ; ailleurs que sous Folia, vous pouvez aussi autoriser benchmark.auto-temp-world dans la configuration du plugin |
plugin_missing_test_args | Un job Test unitaire est arrivé au plugin sans arguments : il ne savait pas quel test lancer. Rien n'a tourné. Le site refuse d'enregistrer une cible de test sans arguments, si bien que c'est rare | Modifiez la cible et indiquez dans Arguments de bench l'identifiant du test, suivi de ses paramètres dans l'ordre où /bench test les prend, par exemple chunkLoading 500 |
plugin_unknown_test | Le test nommé en tête des Arguments de bench ne peut pas démarrer sur ce serveur : aucun test ne porte cet identifiant (unknown_test), ou une extension l'enregistre mais n'a pas su le construire (test_build_failed). Rien n'a tourné | Lancez /bench test list sur le serveur et placez l'un de ses identifiants en tête des Arguments de bench. Un test fourni par une extension exige que cette extension soit installée et activée ; pour test_build_failed, mettez l'extension à jour |
plugin_invalid_test_args | Le plugin connaît le test, mais a refusé l'un des paramètres qui suivent son identifiant dans les Arguments de bench (invalid_test_args) : hors bornes ou non numérique, par exemple. Rien n'a tourné | Corrigez les paramètres. Pour lire le motif du plugin lui-même, tapez la même commande en jeu : /bench test suivi des Arguments de bench de la cible |
plugin_unknown_profile | Un job Profil personnalisé n'a pas pu démarrer : aucun nom de profil n'a été transmis (missing_profile_name), aucun profil de benchmark de ce nom n'est chargé sur le serveur (unknown_profile ; un profil de stress ne compte pas, et le message brut liste les noms chargés), ou l'un des tests du profil n'est plus enregistré (test_no_longer_known). Rien n'a tourné | Indiquez le nom du fichier du profil sans .yml dans Nom du profil personnalisé (sa clé name: n'est qu'un nom d'affichage). /bench custom list montre les profils chargés, et /bench custom reload prend en compte un fichier ajouté depuis le démarrage. Pour test_no_longer_known, réinstallez l'extension qui fournit le test, ou retirez le test du profil |
plugin_unknown_mode | La version installée de VoxelBench ne connaît pas ce mode | Mettez VoxelBench à jour |
plugin_exception | VoxelBench a rencontré une erreur en préparant le run | Cherchez l'erreur dans la console du serveur et signalez-la |
plugin_protocol_error | VoxelBench et voxelbench.com ne se sont pas compris : une réponse que VoxelBench n'a pas su lire, une requête que voxelbench.com a refusée comme mal formée, ou voxelbench.com qui a répondu par une erreur serveur à chaque essai. Le message brut donne le code. Rien n'a tourné | Une erreur serveur (http_5xx, internal_error) vient de VoxelBench : relancez plus tard, et signalez-la si elle persiste. Sinon, mettez VoxelBench à jour avec la dernière version, puis relancez |
plugin_network_error | VoxelBench n'a pas pu joindre voxelbench.com pour valider le run, même après plusieurs essais. Rien n'a tourné | Lancez /bench ping et autorisez la sortie HTTPS vers voxelbench.com |
plugin_rate_limited | voxelbench.com a refusé la demande de challenge de VoxelBench : il n'en délivre pas plus de 150 par heure à une même adresse IP, et chaque requête signée du plugin (valider un run, envoyer un rapport ou un test unitaire) commence par en demander un. Les serveurs qui sortent par la même adresse partagent ce budget. Rien n'a tourné | Relancez plus tard : le budget se libère dans l'heure. Si cela se répète, cherchez ce qui envoie d'autres requêtes à VoxelBench depuis cette adresse, comme d'autres serveurs sur la même machine ou des benchmarks manuels répétés (voir Limites de débit) |
unauthorized_plugin | voxelbench.com ne reconnaît pas ce jar VoxelBench | Installez la dernière version officielle, sans modification, et redémarrez le serveur |
Codes et identité du serveur
| Code | Ce qui s'est passé | Que faire |
|---|---|---|
invalid_nonce, nonce_expired, nonce_consumed, target_missing | Le code à usage unique du run était inconnu, postérieur à l'échéance du run ou déjà utilisé, ou la cible a été supprimée entre-temps | Rien à corriger sur le serveur : lancez un nouveau run. Si invalid_nonce revient sans cesse, vérifiez qu'aucun plugin ne réécrit les commandes du robot |
server_mismatch | Le serveur qu'a atteint le robot n'est pas celui pour lequel la cible a été créée | Assurez-vous que le robot arrive sur le serveur que vous avez vérifié, y compris derrière un proxy. Si l'identité du serveur a changé (une réinstallation sans plugins/VoxelBench/identity.yml), liez-le et vérifiez-le de nouveau, puis créez une nouvelle cible |
Runs arrêtés volontairement
| Code | Ce qui s'est passé |
|---|---|
cancelled_by_user | Annulé depuis le tableau de bord ou par l'API |
cancel_timeout | Annulé, mais l'agent n'a pas confirmé dans les 5 minutes ; le run a été clos quand même |
aborted_in_game | Quelqu'un a lancé /bench stop sur le serveur, ou la console l'a fait |
agent_shutdown | L'agent de banc a redémarré pendant le run, lors d'une mise à jour côté VoxelBench : relancez-le |
rescheduled | Un run de certification déplacé à un autre moment par la modération de VoxelBench ; le run qui le remplace apparaît à sa nouvelle heure |
user_cancelled | Un run de certification annulé par la modération de VoxelBench |
Aucun de ces cas ne compte comme un échec de la cible.
Autres erreurs
| Code | Ce qui s'est passé | Que faire |
|---|---|---|
expired | Le run a atteint son échéance sans se terminer : aucun agent ne l'a pris à temps, ou l'agent qui le menait a cessé de donner des nouvelles (plantage, redémarrage, réseau perdu) avant la fin. Rien n'a été mesuré | Relancez-le ; signalez-le si cela arrive à des runs déjà démarrés |
agent_crash | L'agent de banc a rencontré une erreur inattendue, ou un run s'est terminé sans son rapport : le plugin a fini le benchmark, mais son rapport a été refusé ou n'a pas pu partir. Le message brut commence alors par report-fail pour un run unique, ou par run-fail quand un run d'un job à plusieurs runs a échoué (le plugin abandonne alors les runs restants), suivi du motif. Pour un job Test unitaire, le serveur doit être lié | Pour un report-fail ou un run-fail, mettez VoxelBench à jour avec la dernière version et vérifiez que le serveur joint voxelbench.com (/bench ping). Sinon, lisez le message brut et signalez-le si cela se répète |
unknown | Une erreur que l'agent ne classe pas | Lisez le message brut, et cherchez le code du plugin dans Auto-bench ; signalez-le si le message ne dit rien d'utile |