Several Jenkins threads are quickly created and deleted

Article ID:360031159131
2 minute readKnowledge base

Issue

  • We have seen that there are several Jenkins threads starting at the same time. These threads after some seconds disappear.

From pstree:

|-{java},27447
  |   |-java,27483 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27485
  |   |-java,27487 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27500
  |   |-{java},27501
  |   |-{java},27511
  |   |-{java},27517
  |   |-java,27537 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27543
  |   |-{java},27547
  |   |-java,27548 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27550 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27551 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27552 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27554
  |   |-java,27558 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27573 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27575 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27576 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27577 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27578 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27579 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27581
  |   |-java,27582 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27584 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27586
  |   |-java,27587 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27588 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27590 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27597 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27602
  |   |-java,27603 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27604 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-java,27605 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},27607
  |   |-java,27608 -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Xms16G -Xmx32G...
  |   |-{java},28403
  |   |-{java},28967

Resolution

This usually happens because of the Git polling.

When a Git polling thread is created it is forked from the parent process and for a small period of time this thread is shown as a java process in the same way that the parent. This explains why we saw that process that are only visible for a very small period of time with just the same parameters of the parent.

After this part of the fork, the new process is renamed and this is why we stop seeing it.

So this is normal behavior, that normally is related to the Git Polling (mainly because depending on the size of your instance the Git Polling could be launching frequently). If this process is there for a long period of time we will need to investigate what is happening.

Also if the number of threads that are created is large (more than 20) we recommend you to review the configuration of your SCM Polling in order to avoid performance issues.

You can go through this guide in order to configure the max polling threads correctly: