Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[Bug] IotDB pods crash with OOM because we calculate the memory based on the node not pod resources

Ouverte
#17,764 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
java, shell
Domaine
databases, devops

Piste de recherche

Commencez par conf/confignode-env.sh et conf/datanode-env.sh, en particulier par le calcul de system_memory_in_mb à l’aide de free -m. Comparez les cas de limite mémoire de cgroup v2 et v1 décrits dans l’issue, puis vérifiez qu’un pod limité à 8 GB dimensionne la JVM en fonction de cette limite plutôt qu’en fonction de la mémoire de l’hôte et évite les redémarrages OOM.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Search before asking
  • I searched in the issues and found nothing similar.
Version

latest

Describe the bug and provide the minimal reproduce step

Start IOTDB datanode and confignode pods with memory limits, for example 8 GB, and allocate 8 GB of resources to each pod.

Image

Pods keep crashing with OOM errors because the JVM is trying to allocate 16 GB of memory.

What did you expect to see?
            # When running in a container/pod, use cgroup memory limit instead of host memory
            if [ -f /sys/fs/cgroup/memory.max ]; then
                # cgroup v2
                cgroup_mem=`cat /sys/fs/cgroup/memory.max`
                if [ "$cgroup_mem" != "max" ]; then
                    cgroup_mem_in_mb=`expr $cgroup_mem / 1024 / 1024`
                    if [ "$cgroup_mem_in_mb" -lt "$system_memory_in_mb" ]; then
                        system_memory_in_mb=$cgroup_mem_in_mb
                    fi
                fi
            elif [ -f /sys/fs/cgroup/memory/memory.limit_in_bytes ]; then
                # cgroup v1
                cgroup_mem=`cat /sys/fs/cgroup/memory/memory.limit_in_bytes`
                cgroup_mem_in_mb=`expr $cgroup_mem / 1024 / 1024`
                if [ "$cgroup_mem_in_mb" -lt "$system_memory_in_mb" ]; then
                    system_memory_in_mb=$cgroup_mem_in_mb
                fi
            fi

8GB

I would expect the memory to be auto-calculated based on the pod resources (8 GB), not the node resources (32 GB).

# scripts\conf\datanode-env.sh
system_memory_in_mb=`free -m | sed -n '2p' | awk '{print \$2}'` returns 32 GB.
What did you see instead?

32 GB and a lot of pod restarts

Anything else?
# iotdb\WORKING_CONFIGS.md

## 2) JVM Memory (Linux)

Edit these files:
- conf/confignode-env.sh
- conf/datanode-env.sh

Set MEMORY_SIZE explicitly to avoid auto-sizing surprises.

### ConfigNode memory

```bash
# conf/confignode-env.sh
MEMORY_SIZE=2G
DataNode memory
# conf/datanode-env.sh
MEMORY_SIZE=8G

Why are there no env varibales for this setting?
Do you expect the clouad env to manualy go and change this limit?

This is a hack, and we should not have to do this in a pod

- IOTDB_JMX_OPTS=-Xmx4G
Are you willing to submit a PR?
  • I'm willing to submit a PR!
Langage dominant
Java
Étoiles
6.4k
Forks
1.2k
Merge moyen
1 j 17 h
PR mergées (30 j)
152

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/iotdb

Toutes les issues de apache/iotdb

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.