we recently developed a new mod-gearman-worker in go with the aim to use
less memory. The C Worker uses a prefork model and starts a separate process
for each connection. In total this can consume quite some memory. Imagine
200 Workers with 100mb memory each is already 20gb memory. The goworker uses
a single process and does not have embedded perl which lowers the memory
footprint even more.
It can export prometheus metrics for detailed analysis, ex. track cpu usage
grouped by check plugin.
The new go worker can be found here: https://github.com/ConSol/mod-gearman-worker-go
You can install it by running
%> go get github.com/ConSol/mod-gearman-worker-go
which will install the binary in your gopath.
The new worker can be instantly replaced. It accepts all existing arguments and options
from the c-worker (it just ignores the perl related ones).
Feedback is much appreciated.