processone / docker-ejabberd

Set of ejabberd Docker images
95 stars 77 forks source link

Running ejabberdctl on container creates new threads every time #83

Closed relbraun closed 2 years ago

relbraun commented 2 years ago

Version: latest

I run the command: docker run --name ejabberd -d -p 5222:5222 ejabberd/ecs

and then I run: docker exec -it ejabberd bin/ejabberdctl status

Every time I run this command I see new 4 lines on htop console:

|-erl_child_setup
|-epmd
|-epmd
|-inet_gethost

Screenshot from 2022-04-24 15-38-06

mkl262 commented 2 years ago

Same thing happens to me with ejabberd/ecs:21.12, each time I run an ejabberdctl command, even ejabberdctl status, it spawns the same threads which aren't killed.

badlop commented 2 years ago

I can reproduce that problem using the images with tags 21.12, 21.07 and 21.04:

~ $ ps -all | grep epmd | wc -l
15

~ $ bin/ejabberdctl status
~ $ bin/ejabberdctl status
~ $ bin/ejabberdctl status

~ $ ps -all | grep epmd | wc -l
21

But 21.01 works correctly! Probably the problem was introduced in this commit and the subsequent ones https://github.com/processone/docker-ejabberd/commit/9adadc6999573b0ed383026fe3139a2f336b8329

Now comes the interesting thing: using a recent image from last month, the problem disappears!

Maybe this got solved in the recent image when alpine was updated from 3.11 to 3.14 (see bd19f3e33d50394e0c7330ce38862eaf7283da8f), or because the recent image builds ejabberd release using elixir's mix instead of distillery (see 2ae9f006a3989a0203442be19e2b42cb76a0c345)

Anyway, the latest image available works for me, so hopefully the next release will work too. If you want to give a try, download from: https://github.com/processone/docker-ejabberd/actions/runs/1980534974 and please comment if that solves the problem for you or not.

mkl262 commented 2 years ago

Why is there a dedicated ejabberdctl for the docker image?

badlop commented 2 years ago

Maybe because it requires some customizations to benefit from docker features?