Хотя я мог использовать memcached в Debian для использования порта 11211 по умолчанию, но у меня были большие трудности с настройкой сокета Unix.
Из того, что я прочитал, я знаю, что мне нужно создать memcache.socket
и добавить:
-s /path/to/memcache.socket
-a 0766
Кому /etc/memcached.conf
и закомментировать порт подключения по умолчанию и IP, т.е.
-p 11211
-l 127.0.0.1
Однако, когда я перезагружаю memcached, я получаю внутренние ошибки сервера на сайте Drupal.
Я пытаюсь внедрить Unix-сокеты, чтобы избежать издержек TCP / IP и повысить общую производительность memcached, однако не уверен, какой прирост производительности можно ожидать от этой настройки.
Я ценю ваши советы или, возможно, конфиги, чтобы решить эту проблему.
Ответы:
Вы можете обнаружить, что просто установка пути к сокету не работает. Memcached сбрасывает привилегии до того, как он создает свой сокет, хотя после того, как он записал свой PID. Обычно вставляется сокет
/var/run
(например, как это делает mysql), но только root может писать туда, поэтому создайте/var/run/memcached
и преобразуйте его никому, а затем/var/run/memcached/memcached.sock
укажите путь к сокету. Запись этого/tmp
тоже бы сработала, но по самой своей природе это могло быть разбито; придерживаться его/var/run
немного более постоянным.Вы можете проверить, работает ли он, используя netcat для подключения к нему:
nc -U /var/run/memcached/memcached.sock
Просто введите
stats
пустое приглашение; если он работает, вы получите нагрузку на выход.источник
nobody
невозможно записать в корневую папку без соответствующего разрешения.Я считаю, что сокет должен быть исполняемым в мире, а не записываемым. Если вы видите сообщение с уведомлением PHP, содержащее errno = 32 Broken pipe , установите маску доступа Memcached на 0755
Также убедитесь, что демон Mempached в Drupal имеет TCP-порт
0
в конфигурации. По умолчанию для неустановленного порта11211
установлено сокетное соединение.источник
добавлено в / etc / default / memcached:
добавлено в /etc/memcached.conf:
источник
Я протестировал увеличение производительности при использовании memcached unix-сокетов, это на 33% быстрее, чем использование unix-сокетов в моих тестах с использованием php cli.
Я обнаружил, что важно добавить пользователя memcache в группу www-data и дать разрешения сокету unix 775, чтобы его могли выполнять как обработчик php, так и пользователь memcache.
Вы можете найти тесты и описание здесь - хотя это для WordPress, оно должно работать для Drupal, так как это, скорее всего, проблема с разрешениями.
источник
Обратите внимание, что если вы используете альпийский контейнер в Kubernetes, спецификация pod с пробами работоспособности будет выглядеть примерно так:
Потребовалось время, чтобы выяснить правильные настройки и как подключиться к сокету локального домена Unix через busybox.
источник