Memcached unix soket kullanmak için nasıl kurulur?


12

Debian'da varsayılan 11211 portunu kullanmak için memcached'i kullanabilirim, ancak Unix soketini ayarlamakta büyük zorluk yaşadım.

Ne okudum, ben oluşturmak memcache.socketve eklemek gerektiğini biliyorum :

-s /path/to/memcache.socket
-a 0766

To /etc/memcached.confve varsayılan bağlantı portu üzerinden açıklama ve IP, yani

-p 11211 
-l 127.0.0.1

Ancak, memcached yeniden başlattığınızda Drupal sitesinde iç sunucu hataları alıyorum.

TCP / IP yükünü önlemek ve genel memcached performansını artırmak için unix yuvaları uygulamaya çalışıyorum, ancak bu tweak ne kadar performans kazancı bekleyebilirsiniz emin değilim.

İpuçlarını takdir ediyorum ya da muhtemelen bunu çözmek için yapılandırıyor.


Memcached çalıştığını varsayarsak, Drupal'ı soketi kullanacak şekilde yapılandırdınız mı?
cjc

Evet, Drupal memcached kullanacak şekilde ayarlanmış ve 11211
numaralı

Drupal çalıştıran kullanıcı tarafından / path / to / tam olarak okunabilir / yürütülebilir mi? Soket dosyasının kendisi demek istemiyorum; Drupal kullanıcısının da dizin hiyerarşisine inebilmesi gerekir.
cjc

Yanıtlar:


12

Sadece soket yolunun ayarlanmasının işe yaramadığını görebilirsiniz. Memcached, yuvasını oluşturmadan önce PID'sini yazdıktan sonra ayrıcalıklar bırakır. Soketi yerleştirmek yaygındır /var/run(örneğin mysql'in yaptığı gibi), ancak orada sadece kök yazabilir, bu yüzden /var/run/memcachedonu oluşturup kimseye seçmeyin, ardından /var/run/memcached/memcached.socksoket yolu olarak ayarlayın . Yazmak da /tmpişe yarayacaktı, ama doğası gereği çöpe atılabilecek; yapıştırmak /var/runbiraz daha kalıcıdır.

Bağlanmak için netcat kullanarak çalışıp çalışmadığını kontrol edebilirsiniz:

nc -U /var/run/memcached/memcached.sock

statsBoş isteme yazmanız yeterlidir; eğer çalışıyorsa bir miktar çıktı alırsınız.


1
Bu, diğer cevaptan ziyade benim için çalıştı. Açıkçası nobody, uygun izin olmadan kök sahipli bir klasöre yazamazsınız.
Daniel W.10

8

Soketin yazılabilir değil, dünya tarafından çalıştırılabilir olması gerektiğine inanıyorum. Errno = 32 Kırık boru içeren bir PHP bildirim mesajı görüyorsanız , Memcached erişim maskesini 0755 olarak ayarlayın

-s /path/to/memcache.socket
-a 0755

Ayrıca Drupal'ın Memcached arka plan programının0 konfigürasyonda TCP portu olduğunu doğrulayın . Ayarlanmamış bir bağlantı noktası varsayılan olarak 11211soket bağlantısını karıştırır ve karıştırır.

$conf += array(
    'memcache_servers' => array(
        'unix:///path/to/memcache.socket:0'  => 'default',
    )
);

Maskenin, okuma / yazma gerektiğinde 766 veya 666 olması gerektiğine inanıyorum.
arleslie

6

/ etc / default / memcached klasörüne eklendi:

[ ENABLE_MEMCACHED = yes ] && install -d -o memcache -g www-data -m 0770 /var/run/memcached
# or use setfacl and whatever user/group you want
true # because set -e in init-scripts

/etc/memcached.conf dosyasına eklendi:

-s /var/run/memcached/memcached.sock
-a 0666

1

Memcached unix soketlerini kullanmanın performans artışını karşılaştırdım, php cli kullanarak testlerimde unix soketlerini kullanmak% 33 daha hızlı.

Memcache kullanıcısını www-data grubuna eklemenin ve unix soket 775 izinlerini vermenin önemli olduğunu gördüm, bu şekilde hem php işleyici hem de memcache kullanıcısı çalıştırabilir.

Kıyaslamaları ve yazımları burada bulabilirsiniz - WordPress için olmasına rağmen, bir izin sorunu olması nedeniyle Drupal için çalışması gerekir.


0

Kubernetes'te bir alp kabı kullanıyorsanız, sağlık problu pod spesifikasyonu şöyle görünecektir:

spec:
  containers:
    - name: memcached
      image: memcached:1.5-alpine
      imagePullPolicy: "IfNotPresent"
      command:
      - memcached
      - --unix-socket=/tmp/memcached.sock
      - --unix-mask=0766
      - -m 64
      - -o modern
      - -v
...
      livenessProbe:
        exec:
          command:
          - /bin/sh
          - -c
          - 'echo "stats slabs" | nc local:/tmp/memcached.sock'
        initialDelaySeconds: 30
        timeoutSeconds: 5
      readinessProbe:
        exec:
          command:
          - /bin/sh
          - -c
          - 'echo "stats slabs" | nc local:/tmp/memcached.sock'
        initialDelaySeconds: 5
        timeoutSeconds: 1

Doğru ayarları ve meşgul kutusu aracılığıyla bir unix yerel etki alanı soketine nasıl bağlanılacağını anlamak biraz zaman aldı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.