यूनिक्स सॉकेट का उपयोग करने के लिए मेमेकैच कैसे सेट करें?


12

हालांकि मैं डिफ़ॉल्ट 11211 पोर्ट का उपयोग करने के लिए डेबियन पर मेमकास्टेड का उपयोग कर सकता हूं, लेकिन मुझे यूनिक्स सॉकेट स्थापित करने में बहुत कठिनाई हुई है।

मैंने जो पढ़ा है, मैं जानता हूं कि मुझे एक बनाने memcache.socketऔर जोड़ने की जरूरत है :

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

करने के लिए /etc/memcached.confऔर बाहर डिफ़ॉल्ट कनेक्शन बंदरगाह टिप्पणी और आईपी, यानी

-p 11211 
-l 127.0.0.1

हालाँकि, जब मैं पुनः आरंभ करता हूं तो मुझे ड्रुपल साइट पर आंतरिक सर्वर त्रुटियां मिलती हैं।

मैं टीसीपी / आईपी ओवरहेड से बचने और समग्र मेम्केड प्रदर्शन को बढ़ावा देने के लिए यूनिक्स सॉकेट्स को लागू करने की कोशिश कर रहा हूं, हालांकि यह सुनिश्चित नहीं है कि इस प्रदर्शन से कितना फायदा हो सकता है।

मैं आपके संकेतों की सराहना करता हूं या संभवतः इसे हल करने के लिए कॉन्फ़िगर करता हूं।


मान लिया गया कि मेमॉकैस्ट चल रहा है, क्या आपने सॉकेट का उपयोग करने के लिए ड्रुपल को कॉन्फ़िगर किया था?
cjc

हाँ, Drupal memcached उपयोग करने के लिए स्थापित किया गया है और ठीक से काम करता है जब मैं बंदरगाह 11211. का उपयोग
alfish

Drupal चलाने वाले उपयोगकर्ता द्वारा / पथ / / से / पूरी तरह से पठनीय / निष्पादन योग्य है? मेरा मतलब सॉकेट फ़ाइल से ही नहीं है; Drupal उपयोगकर्ता को डायरेक्टरी पदानुक्रम को नीचे लाने में सक्षम होने की आवश्यकता होगी।
cjc

जवाबों:


12

आप पा सकते हैं कि बस सॉकेट पथ सेट करने से काम नहीं होता है। इसके सॉकेट बनाने से पहले मेम्केडेड ड्रॉप विशेषाधिकार प्राप्त करता है, हालांकि इसके पीआईडी ​​लिखे जाने के बाद। सॉकेट को अंदर रखना आम है /var/run(जैसे कि mysql करता है), लेकिन केवल रूट ही वहां लिख सकता है, इसलिए /var/run/memcachedइसे बनाएं और किसी को न दें, फिर /var/run/memcached/memcached.sockसॉकेट पथ के रूप में सेट करें । यह लिखने के लिए /tmpभी काम करेगा, लेकिन इसकी बहुत ही प्रकृति से जो ट्रैश हो सकता है; इसमें चिपकना /var/runथोड़ा और स्थायी है।

आप इसे कनेक्ट करने के लिए netcat का उपयोग करके जांच कर सकते हैं:

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

बस statsरिक्त प्रॉम्प्ट पर टाइप करें ; यदि यह काम कर रहा है तो आपको आउटपुट का भार मिलेगा।


1
इसने मेरे लिए काम किया, बजाय अन्य उत्तर के। स्पष्ट रूप nobodyसे एक रूट स्वामित्व वाले फ़ोल्डर w / o के लिए उपयुक्त अनुमति नहीं लिख सकते।
डैनियल डब्ल्यू।

8

मेरा मानना ​​है कि सॉकेट को निष्पादन योग्य होना चाहिए, न कि लेखन योग्य। यदि आपकी PHP नोटिस संदेश में ग़लती से = 32 टूटा हुआ पाइप दिखाई दे रहा है , तो मेमक्श्ड एक्सेस मास्क को 0755 पर समायोजित करें

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

यह भी सत्यापित करें कि कॉन्फ़िगरेशन में Drupal के Memcached Daemon में TCP पोर्ट है 0। एक unset पोर्ट 11211सॉकेट कनेक्शन को डिफ़ॉल्ट और भ्रमित करेगा।

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

मेरा मानना ​​है कि मुखौटा 766 या 666 होना चाहिए क्योंकि आपको पढ़ने / लिखने की आवश्यकता है।
अर्लेस्ली

6

/ etc / default / memcached में जोड़ा गया:

[ 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 में जोड़ा गया:

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

1

मैंने मेमरी वाले यूनिक्स सॉकेट्स के उपयोग के प्रदर्शन को बढ़ावा दिया, यह php cli का उपयोग करके मेरे परीक्षणों में यूनिक्स सॉकेट्स का उपयोग करने के लिए 33% तेज है।

मैंने पाया कि www-data समूह में मेमेचे उपयोगकर्ता को जोड़ना और यूनिक्स सॉकेट 775 अनुमतियाँ देना महत्वपूर्ण है, इस तरह से php हैंडलर और मेमाचे उपयोगकर्ता दोनों इसे निष्पादित कर सकते हैं।

आप यहां बेंचमार्क और राइट-अप पा सकते हैं - हालांकि यह वर्डप्रेस के लिए है क्योंकि यह ड्रुपल के लिए काम करना चाहिए क्योंकि यह एक अनुमति समस्या है।


0

ध्यान दें कि यदि आप कुबेरनेट्स में अल्पाइन कंटेनर का उपयोग कर रहे हैं, तो स्वास्थ्य जांच के साथ पॉड की युक्ति कुछ इस तरह दिखाई देगी:

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

सही सेटिंग्स का पता लगाने के लिए कुछ समय लिया, और व्यस्त बॉक्स के माध्यम से एक यूनिक्स स्थानीय डोमेन सॉकेट से कैसे कनेक्ट किया जाए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.