Làm thế nào để thiết lập memcached để sử dụng ổ cắm unix?


12

Mặc dù tôi có thể sử dụng memcached trên Debian để sử dụng cổng 11211 mặc định, nhưng tôi đã gặp khó khăn lớn khi thiết lập ổ cắm Unix.

Từ những gì tôi đã đọc, tôi biết rằng tôi cần tạo memcache.socketvà thêm:

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

Đến /etc/memcached.confvà nhận xét cổng kết nối và IP mặc định, nghĩa là

-p 11211 
-l 127.0.0.1

Tuy nhiên, khi tôi khởi động lại memcached, tôi gặp lỗi máy chủ nội bộ trên trang web Drupal.

Tôi đang cố gắng thực hiện các ổ cắm unix để tránh chi phí TCP / IP và tăng hiệu suất ghi nhớ tổng thể, tuy nhiên không chắc người ta có thể mong đợi bao nhiêu hiệu suất có thể mong đợi của tinh chỉnh này.

Tôi đánh giá cao gợi ý của bạn hoặc có thể cấu hình để giải quyết vấn đề này.


Giả sử memcached đang chạy, bạn đã cấu hình Drupal để sử dụng ổ cắm chưa?
cjc

Có, Drupal đã được thiết lập để sử dụng memcached và hoạt động đúng khi tôi sử dụng cổng 11211.
alfish

Là / path / to / hoàn toàn có thể đọc / thực thi bởi người dùng đang chạy Drupal? Tôi không có nghĩa là các tập tin ổ cắm chính nó; người dùng Drupal cũng sẽ cần có khả năng hạ xuống hệ thống phân cấp thư mục.
cjc

Câu trả lời:


12

Bạn có thể thấy rằng chỉ cần thiết lập đường dẫn ổ cắm không hoạt động. Memcached giảm các đặc quyền trước khi nó tạo ra ổ cắm của nó, mặc dù sau khi nó viết PID của nó. Việc đặt ổ cắm vào /var/run(ví dụ như mysql) là điều phổ biến , nhưng chỉ root mới có thể ghi ở đó, vì vậy hãy tạo /var/run/memcachedvà chown nó cho không ai, sau đó đặt /var/run/memcached/memcached.socklàm đường dẫn ổ cắm. Viết nó để /tmplàm việc quá, nhưng bản chất của nó có thể bị vùi dập; gắn nó vào /var/runlà lâu hơn một chút.

Bạn có thể kiểm tra nó hoạt động bằng cách sử dụng netcat để kết nối với nó:

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

Chỉ cần gõ statstại dấu nhắc trống; nếu nó hoạt động bạn sẽ nhận được một tải đầu ra.


1
Điều này làm việc cho tôi, hơn là câu trả lời khác. Rõ ràng nobodykhông thể ghi vào thư mục sở hữu gốc với sự cho phép thích hợp.
Daniel W.

8

Tôi tin rằng các ổ cắm sẽ cần phải được thực thi trên thế giới, không thể ghi. Nếu bạn thấy thông báo thông báo PHP chứa errno = 32 Đường ống bị hỏng , hãy điều chỉnh mặt nạ truy cập Memcached thành 0755

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

Đồng thời xác minh rằng daemon Memcached của Drupal có cổng TCP 0trong cấu hình. Một cổng unset sẽ mặc định 11211và gây nhầm lẫn kết nối ổ cắm.

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

Tôi tin rằng mặt nạ nên là 766 hoặc 666 khi bạn cần đọc / ghi.
arleslie

6

được thêm vào / 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

đã thêm vào /etc/memcached.conf:

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

1

Tôi đã đánh giá mức tăng hiệu năng của việc sử dụng các ổ cắm unix memcached, nó nhanh hơn 33% khi sử dụng các ổ cắm unix trong các thử nghiệm của tôi bằng cách sử dụng php cli.

Tôi thấy rằng điều quan trọng là thêm người dùng memcache vào nhóm dữ liệu www và cung cấp cho các quyền unix socket 775, theo cách này, cả trình xử lý php và người dùng memcache đều có thể thực thi nó.

Bạn có thể tìm thấy điểm chuẩn và viết lên ở đây - mặc dù đối với WordPress, nó nên hoạt động cho Drupal vì rất có thể đó là vấn đề về quyền.


0

Lưu ý nếu bạn đang sử dụng một thùng chứa alpine trong Kubernetes, thông số pod với các đầu dò sức khỏe sẽ trông giống như thế này:

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

Mất một lúc để tìm ra các cài đặt phù hợp và cách kết nối với ổ cắm tên miền cục bộ unix thông qua busybox.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.