Bien que je puisse utiliser memcached sur Debian pour utiliser le port 11211 par défaut, mais j'ai eu beaucoup de difficulté à configurer le socket Unix.
D'après ce que j'ai lu, je sais que je dois créer un memcache.socket
et ajouter:
-s /path/to/memcache.socket
-a 0766
Pour /etc/memcached.conf
et commentez le port de connexion par défaut et IP, c.-à-d.
-p 11211
-l 127.0.0.1
Cependant, lorsque je redémarre memcached, j'obtiens des erreurs de serveur interne sur le site Drupal.
J'essaie d'implémenter des sockets Unix pour éviter la surcharge TCP / IP et augmenter les performances globales de Memcached, mais je ne suis pas sûr du gain de performances que l'on peut attendre de ce réglage.
J'apprécie vos conseils ou éventuellement les configurations pour résoudre ce problème.
Réponses:
Vous pouvez constater que le simple fait de définir le chemin du socket ne fonctionne pas. Memcached supprime les privilèges avant de créer son socket, bien qu'après avoir écrit son PID. Il est courant de placer le socket
/var/run
(par exemple, comme le fait mysql), mais seul root peut y écrire, alors créez-le/var/run/memcached
et ne le montrez à personne, puis définissez-le/var/run/memcached/memcached.sock
comme chemin de socket. L'écrire/tmp
fonctionnerait aussi, mais de par sa nature même, cela pourrait être saccagé; le coller/var/run
est un peu plus permanent.Vous pouvez vérifier que cela fonctionne en utilisant netcat pour vous y connecter:
nc -U /var/run/memcached/memcached.sock
Tapez simplement
stats
à l'invite vide; si cela fonctionne, vous obtiendrez une charge de sortie.la source
nobody
ne peut pas écrire dans un dossier appartenant à la racine sans l'autorisation appropriée.Je pense que le socket devra être exécutable dans le monde entier et non accessible en écriture. Si vous voyez un message de notification PHP contenant errno = 32 Broken pipe , ajustez le masque d'accès Memcached à 0755
Vérifiez également que le démon Memcached de Drupal possède le port TCP de
0
dans la configuration. Un port non défini sera par défaut11211
et confondra la connexion de socket.la source
ajouté à / etc / default / memcached:
ajouté à /etc/memcached.conf:
la source
J'ai comparé l'amélioration des performances de l'utilisation de sockets Unix memcached, il est 33% plus rapide d'utiliser des sockets Unix dans mes tests en utilisant le php cli.
J'ai trouvé qu'il est important d'ajouter l'utilisateur memcache au groupe www-data et de donner au socket 775 unix des autorisations, de cette façon le gestionnaire php et l'utilisateur memcache peuvent l'exécuter.
Vous pouvez trouver les références et écrire ici - bien que ce soit pour WordPress, cela devrait fonctionner pour Drupal car il s'agit très probablement d'un problème d'autorisations.
la source
Notez que si vous utilisez un conteneur alpin dans Kubernetes, la spécification de pod avec des sondes de santé ressemblerait à ceci:
Il a fallu un certain temps pour déterminer les bons paramètres et comment se connecter à une socket de domaine local Unix via busybox.
la source