I’m running self-hosted Redash using Docker-compose. It’s taking about 650MB of RAM while sitting idle, which seems excessive. We have less than 10 queries defined in our instance, though some of them are on a 5m refresh schedule.

  • Redash version: 4.0.1+b4038
  • Docker version: 18.06.1-ce
  • Docker-compose version: 1.22.0

This is the output of docker stats:

CONTAINER ID    NAME                  CPU %       MEM USAGE / LIMIT     MEM %       NET I/O             BLOCK I/O           PIDS
812087c136d6    redash_server_1       0.01%       447.8MiB / 1.953GiB   22.39%      1.27MB / 1.19MB     9.73MB / 0B         0
7cb0f3c7febe    redash_redis_1        0.09%       10.21MiB / 1.953GiB   0.51%       494kB / 1.26MB      2.44MB / 2.47MB     0
7be78faee516    redash_worker_1       0.00%       183.5MiB / 1.953GiB   9.17%       234kB / 319kB       48.1MB / 36.9kB     0
5f90bb9204d6    redash_postgres_1     0.00%       8.578MiB / 1.953GiB   0.43%       122kB / 141kB       16.3MB / 475kB      0

If I change the REDASH_WEB_WORKERS config variable from 4 to 1, then redash_server_1's RAM usage goes to 118MB, but redash_worker_1's goes to 252MB.

Is this expected, or an anomaly? Why are gunicorn and celery so much more intensive than postgres and redis? Where should I begin looking into it?