Hi all,
Our GoCD server is acting slow. We have >1000 pipelines that trigger
automatically on updates to various branches of a Git repository. For each
branch that needs to be picked up by GoCD, we have a distinct git material
with shallow clone set to true. The time to trigger from Git updates is
quite slow. The UI is also a bit sluggish in general.
Environment info:
Linux
GoCD server 21.1.0
PostgreSQL 12.8 database
The server was recently recreated updating the OS from Ubuntu 16.04 to
Ubuntu 20.04. The most important pieces of configuration were restored from
the previous server. However, it's possible some configuration was lost, or
some package version was changed, or something like that. I'd appreciate
any pointers.
While trying to debug this, I noticed a few things:
CPU utilization on the machine is hovering around 60%, when there are no
jobs running.
The top consumers of CPU on the machine are git commands run by the GoCD
server. At any given time there are about 8 instances of git processes like
"git branch -r --contains <commit-sha>". Each of these git commands can be
using a whole CPU.
Looking at things related to git, I noticed:
The GoCD server logs in /var/log/go-server/go-server.log have a lot these
messages (referencing the different deployment branches):
2023-01-11 06:44:04,168 WARN [ThreadPoolTaskScheduler-7]
MaterialUpdateService:204 - [Material Update] Skipping update of material
GitMaterial{[email protected]:repo/app.git, branch='abranch',
shallowClone=true, submoduleFolder='null'} which has been in-progress since
Wed Jan 11 06:43:04 UTC 2023
Using jstack to get thread dumps from the server, this seems to be the java
stack trace where those git processes are launched:
"130@MessageListener for MaterialUpdateListener" #130 daemon prio=5
os_prio=0 cpu=14618.25ms elapsed=100474.11s tid=0x00007fa2ded9dca0
nid=0xea6f in Object.wait() [0x00007fa20c5ad000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <no object reference available>
at java.lang.Object.wait([email protected]/Unknown Source)
at java.lang.ProcessImpl.waitFor([email protected]/Unknown Source)
- locked <0x00000005370e58e0> (a java.lang.ProcessImpl)
at
com.thoughtworks.go.util.ProcessWrapper.waitForExit(ProcessWrapper.java:54)
at
com.thoughtworks.go.util.command.CommandLine.runOrBomb(CommandLine.java:354)
at
com.thoughtworks.go.util.command.CommandLine.runOrBomb(CommandLine.java:378)
at
com.thoughtworks.go.domain.materials.SCMCommand.runOrBomb(SCMCommand.java:38)
at
com.thoughtworks.go.domain.materials.git.GitCommand.containsRevisionInBranch(GitCommand.java:364)
at
com.thoughtworks.go.config.materials.git.GitMaterial.modificationsSince(GitMaterial.java:132)
at
com.thoughtworks.go.server.service.materials.GitPoller.modificationsSince(GitPoller.java:35)
at
com.thoughtworks.go.server.service.materials.GitPoller.modificationsSince(GitPoller.java:26)
at
com.thoughtworks.go.server.service.MaterialService.modificationsSince(MaterialService.java:134)
at
com.thoughtworks.go.server.materials.ScmMaterialUpdater.insertLatestOrNewModifications(ScmMaterialUpdater.java:56)
at
com.thoughtworks.go.server.materials.MaterialDatabaseUpdater.insertLatestOrNewModifications(MaterialDatabaseUpdater.java:157)
at
com.thoughtworks.go.server.materials.MaterialDatabaseUpdater.updateMaterialWithNewRevisions(MaterialDatabaseUpdater.java:149)
at
com.thoughtworks.go.server.materials.MaterialDatabaseUpdater$2.doInTransaction(MaterialDatabaseUpdater.java:108)
at
com.thoughtworks.go.server.transaction.TransactionCallback.doWithExceptionHandling(TransactionCallback.java:23)
at
com.thoughtworks.go.server.transaction.TransactionTemplate.lambda$executeWithExceptionHandling$2(TransactionTemplate.java:43)
at
com.thoughtworks.go.server.transaction.TransactionTemplate$$Lambda$1842/0x00000008045df9c8.doInTransaction(Unknown
Source)
at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at
com.thoughtworks.go.server.transaction.TransactionTemplate.executeWithExceptionHandling(TransactionTemplate.java:40)
at
com.thoughtworks.go.server.materials.MaterialDatabaseUpdater.updateMaterial(MaterialDatabaseUpdater.java:105)
- locked <0x0000000537f34488> (a java.lang.String)
at
com.thoughtworks.go.server.materials.MaterialUpdateListener.onMessage(MaterialUpdateListener.java:64)
at
com.thoughtworks.go.server.materials.MaterialUpdateListener.onMessage(MaterialUpdateListener.java:32)
at
com.thoughtworks.go.server.messaging.activemq.JMSMessageListenerAdapter.runImpl(JMSMessageListenerAdapter.java:83)
at
com.thoughtworks.go.server.messaging.activemq.JMSMessageListenerAdapter.run(JMSMessageListenerAdapter.java:63)
at java.lang.Thread.run([email protected]/Unknown Source)
Any help is appreciated, thanks!
--
You received this message because you are subscribed to the Google Groups
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/go-cd/3c3fe87e-5639-4316-9dfa-bc3dcf68d901n%40googlegroups.com.