blog-image

Nextcloud - Problème de lenteur

  • bsourisse
  • 02/03/2022
  • (Durée de lecture : 2 mn)

Les problèmes de lenteur avec Nextcloud peuvent provenir de plusieurs paramètres (vitesse des disques, architecture,…).

Le problème que j’ai rencontré est tout simplement lié au DNS (Domain Name Service).

Selon votre architecture :

  • Un serveur avec toutes les couches
  • ou bien un architecture réparties (un serveur php, un serveur sgbdr, un serveur redis, un serveur de fichiers)

Tous les serveurs impliqués dans le fonctionnement de Nextcloud doivent avoir accès aux bonnes informations de DNS, sinon c’est la catastrophe.

Pour détecter ce type d’incident, dressez la liste de tous les serveurs impliqués dans votre infrastructure Nextcloud et sur chacun des serveurs, tentez la résolution de tous les serveurs avec une de ces commandes par exemple : “host”,“nslookup”,“dig”,…

host [nom du serveur]

Mais aussi le reverse

host [adresse IP du serveur]

Si vous rencontrez une erreur, une partie de la lenteur de NextCloud constatée en sera la cause.

Les problèmes DNS peuvent varier mais l’erreur qui revient souvent quand vous gérer votre propre DNS Bind est l’erreur : “journal out of sync”, liée à une mauvaise incrémentation du “serial”.

Pour résoudre le problème, connectez-vous sur le serveur chargé de gérer la fonction DNS, puis :

systemctl restart bind9
# Recherche d'erreurs out of sync
grep "journal out of sync with zone" /var/log/syslog
# Si des erreurs apparaissent
rm -rf /var/cache/bind/*.jnl
# restart bind
systemctl restart bind9
# et recherche à nouveau des erreurs out of sync
grep "journal out of sync with zone" /var/log/syslog

Recommencez l’opération de contrôle de résolution de nom sur chacun des serveurs impliqués dans votre infrastructure Nextcloud.

Automatisation

A exécuter sur le serveur DNS (bind9)

cache="/var/cache/bind/"
res=$(grep "journal out of sync with zone" /var/log/syslog | tail -1)
if [ "$res" != "" ];then
        # looking for jnl files
        files=$(find "$cache" -name "*.jnl")
        if [ "$files" != "" ];then
                echo "syslog out of sync detected : "
                echo "*****************"
                echo "$res"
                echo "*****************"
                echo "Deleting files : $files"
                find "$cache" -name "*.jnl" -exec rm -rf {} \;
                echo "*****************"
                echo "Restarting bind9"
                systemctl restart bind9
        fi
fi

+++

Licence de ce document : Creative Commons (CC BY-NC-ND 4.0)

CETTE DOCUMENTATION EST LIVRÉE “EN L’ÉTAT”, SANS GARANTIE D’AUCUNE SORTE ET DISTRIBUÉE DANS UN BUT ÉDUCATIF EXCLUSIVEMENT. L’AUTEUR, CONTRIBUTEURS DE CETTE DOCUMENTATION OU ©MYTINYDC.COM NE SAURAIENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES DES DOMMAGES DIRECTS OU INDIRECTS POUVANT RÉSULTER DE L’APPLICATION DES PROCÉDURES MISES EN ŒUVRE DANS CETTE DOCUMENTATION, OU DE LA MAUVAISE INTERPRÉTATION DE CE DOCUMENT.