我已经使用 memcached pecl 扩展为 Drupal 站点安装了 memcache。一切运行正常,但我仍然在配置设置方面遇到困难。
例如,遵循 drupal.org 上的建议
You should probably lock down the memcache server so that it only listens for
connections from the hosts that need to be served, as the default is that
memcache listens to connections from all addresses.
So, to close that hole, edit /etc/sysconfig/memcached with:
OPTIONS="-l ${HOSTIP}"
问题是我的服务器上没有这个文件,无论如何不在这个位置。其他一些文章提到了 /etc/memcached.conf,但我也找不到这个文件。
考虑到我的服务器上不存在 /etc/sysconfig/memcached 或 /etc/memcached.conf,我可以安全地创建它们吗?这些文件可能位于其他地方吗?在这种情况下我应该在哪里查找或有什么方法可以找到该信息?
最后,任何资源、教程或文档链接都将不胜感激。我浏览了 memcache 站点的 Wiki,但只找到了几篇适合初学者的相关文章。
答案1
您没有告诉我们您的操作系统/发行版。此外,您也没有告诉我们您是如何安装 memcached 的。
通常,当您在基于 debian 的系统下或redhat 、fedora 或 centos 下/etc/
安装 memcached 时,您将获得一个示例配置文件。apt-get
rpm
yum
如果你从源代码安装,则可能无法获得示例文件/etc/
(我自己没有从源代码安装 memcached)。但是,你可以在解压后的源文件夹中查找示例配置文件。
无论如何,您都可以使用locate memcached.conf
它在系统中查找一个。您需要sudo updatedb
在此之前更新搜索缓存。
以下是我系统中的配置文件。您可以使用它:
# Run memcached as a daemon. This command is implied, and is not needed for the
# daemon to run. See the README.Debian that comes with this package for more
# information.
-d
# Log memcached's output to /var/log/memcached
logfile /var/log/memcached.log
# Be verbose
# -v
# Be even more verbose (print client commands as well)
# -vv
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 64
# Default connection port is 11211
-p 11211
# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u memcache
# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
-l 127.0.0.1
# Limit the number of simultaneous incoming connections. The daemon default is 1024
# -c 1024
# Lock down all paged memory. Consult with the README and homepage before you do this
# -k
# Return error when memory is exhausted (rather than removing items)
-M
# Maximize core file limit
# -r
您也可以从命令行传递相同的选项。
答案2
默认(CentOS)/etc/sysconfig/memcached:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
初始化脚本(CentOS)/etc/init.d/memcached:
...
if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi
...
如果文件存在,则上述操作相当于“获取”它(即读取并评估其内容)。
据我所知,memcached 没有配置文件。它使用命令行参数,例如(来自 RHEL/CentOS 初始化脚本):
daemon --pidfile ${pidfile} memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P ${pidfile} $OPTIONS
(您会注意到,这里使用了上面定义的变量)。
因此,底线是:
- 检查您的初始化脚本 - 如果它包含类似于上面的部分(if 语句),那么当然,创建匹配的文件,并在其中放置适当的变量。
- 没有配置文件 —— 不要创建它,因为它不会被使用。
答案3
如果你在 CentOS 上找不到 /etc/init.d/memcached,请尝试以下操作:
nano /usr/lib/systemd/system/memcached.service
并改变:
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS
到:
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -I $MAXITEMSIZE -c $MAXCONN $OPTIONS
在 /etc/sysconfig/memcached 中添加
MAXITEMSIZE="128m"
重启 memcached
service memcached restart
要检查参数是否已添加,请尝试:
ps aux | grep memcached