2010-07-13 17 views
1

Voici ce que je crois être le message d'erreur correspondant:Pourquoi est-ce que j'obtiens cette java.io.exception "Impossible d'allouer de la mémoire" à Hudson?

Caused by: java.io.IOException: Cannot run program "/usr/bin/git" (in directory "/var/lib/hudson/jobs/Goals/workspace"): java.io.IOException: error=12, Cannot allocate memory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:474) 
    at hudson.Proc$LocalProc.<init>(Proc.java:192) 
    at hudson.Proc$LocalProc.<init>(Proc.java:164) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:638) 
    at hudson.Launcher$ProcStarter.start(Launcher.java:273) 
    at hudson.Launcher$ProcStarter.join(Launcher.java:280) 
    at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:319) 
    ... 15 more 
Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:164) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:81) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:467) 
    ... 21 more 

Vous pouvez également voir la sortie complète de Hudson ici: http://hudson.pastebin.com/KLSNrY1D

Toutes les idées? Comment puis-je empêcher cela de se produire? Je ne suis pas un développeur Java, donc je ne sais pas trop ce qui se passe ici. Je dois redémarrer Hudson entièrement pour résoudre le problème, mais clairement ce n'est pas la meilleure réponse.

Répondre

3

On dirait que vous avez épuisé l'espace d'échange sur votre boîte. Le java.lang.ProcessBuilder.start() doit finalement se résumer à un appel système fork ou clone sur un OS de type Unix pour créer un nouveau processus. Cela prend de l'espace de swap. Et vous semblez n'en avoir pas assez. C'est plus dans le domaine de l'admin système Unix, pas Java.

+0

Merci! Je cours sur Linode avec un échange de 256 Mo. J'hésiterais à penser que ce n'est pas assez pour ce que je faisais (pas très lourd), mais c'est bon à savoir pour l'avenir. –

+1

Vous exécutez des trucs basés sur Java et la mesure de la mémoire en Mb? Surpris c'est la première fois que vous voyez cela. :-) –

1

Combien de programmes externes exécutez-vous à la fois? Combien de constructeurs d'Hudson, etc? Que dit "libre" quand cela arrive?

Vous avez peut-être simplement constaté que le système n'avait plus de mémoire disponible pour le processus hudson avec les enfants.

+0

Je n'exécute aucun programme externe (Bugzilla opérant sur un sous-domaine séparé, bien que ce ne soit pas utilisé fortement). Hudson n'exécute qu'une seule construction à la fois. Je ne suis pas sûr de ce que vous voulez dire quand vous posez des questions sur "gratuit"? S'il vous plaît, développez. –

+0

Sous Linux, il y a généralement une commande nommée "free" qui vous en dit long sur l'utilisation de la mémoire. Vous voudrez peut-être jeter un coup d'oeil à cela. –

2

Pour moi:

echo 0 > /proc/sys/vm/overcommit_memory 

a résolu le problème.