我目前在运行 Redhat x86_64 es5 的 Xeon 7550 服务器上,内存为 32gb。我安装了 memcache,配置中剩下的唯一步骤是设置它使用的内存量。我在旧服务器上完成了此操作,在那里我通过 Filezilla(root 访问权限)下载了一个文件并对其进行了编辑。现在,我不记得我编辑了哪个文件以及过程是如何进行的。我想将内存设置为使用 1 GB。
任何有一些洞察力的人?如果您愿意提供帮助,请彻底,因为我的 linux 服务器知识有限。
我已经使用 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}"
Run Code Online (Sandbox Code Playgroud)
问题是我的服务器上没有这个文件,无论如何都没有在这个位置。其他一些文章提到了 /etc/memcached.conf 但我也找不到这个文件。
考虑到 /etc/sysconfig/memcached 或 /etc/memcached.conf 没有在我的服务器上退出,我可以安全地创建它们吗?这些文件是否可能位于其他地方,在这种情况下,我应该在哪里查看或有什么方法可以找到该信息?
最后,将不胜感激任何资源、教程或文档链接。我浏览过 memcache 的站点 Wiki,只能找到几篇适合初学者的相关文章。
我想将 Nginx 设置为我的 Web 服务器。我想将图像文件缓存在内存 (RAM) 而不是磁盘中。我正在提供一个小页面,并希望始终从 RAM 提供一些图像。我不希望为此使用 Varnish(或任何其他此类工具),因为我相信 Nginx 能够将内容缓存到 RAM 中。我不确定如何为此配置 Nginx?我确实尝试了一些组合,但没有奏效。Nginx 一直使用磁盘来获取图像。
例如,当我尝试使用 Apache 基准测试使用以下命令进行测试时:
ab -c 500 -n 1000 http://localhost/banner.jpg
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
socket: Too many open files (24)
Run Code Online (Sandbox Code Playgroud)
我想这意味着 Nginx 试图从磁盘同时打开太多文件,而操作系统不允许此操作。任何人都可以建议我正确的配置吗?
我被要求启动一个别人建立的网站。这是一个需要 Memcached 才能运行的 Wordpress 商店站点,我一直在让 Memcached 和 memcache php 插件在我的本地服务器上运行时遇到问题。在安装 memcached 和 memcache PHP 插件之前,我会收到这个错误:
Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350
Run Code Online (Sandbox Code Playgroud)
现在我已经安装了 memcached 和 memcache PHP 插件(通过 Homebrew),我得到一个“没有收到数据”页面,并在我的 Apache 错误日志中得到这个错误:
dyld: lazy symbol binding failed: Symbol not found: _mmc_queue_pop
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
Expected in: flat namespace
dyld: Symbol not found: _mmc_queue_pop
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
Expected in: flat namespace
[Sat May 05 16:38:27 2012] [notice] child pid 26491 exit signal Trace/BPT trap (5)
Run Code Online (Sandbox Code Playgroud)
我尝试在活动监视器中查找该 pid 无济于事,并且每次尝试加载页面时它都会更改。另外,我在任何地方都找不到关于 …
我对此进行了一些研究,但没有找到明确的答案。
我们有一个使用 PHP+Memcache 会话处理程序的 Web 应用程序。
我有几个问题,都是相互关联的,但最终我的问题是,“为什么 PHP 会话在我们认为应该到期时显然没有到期?” 即最终用户应该在设定的时间后退出应用程序,但不是。
下面是点,请帮我把它们连接起来,并告诉我我错在哪里:
用户没有被注销。
我怎么能调试呢?Memcache 并不完全透明。
没有工作的示例案例是会话超时设置为两小时的站点。示例用户会在晚上最后一次使用该站点,然后在 8 到 10 小时后返回该站点并仍处于登录状态。
我对 Memcache 和 Redis 有点陌生,我试图了解两者之间的区别以及它们的实际含义。
正如我向我解释的那样,Memcache 是一种数据库缓存解决方案。来自频繁运行的查询的数据被缓存,以便在以后重新使用以加快响应时间。这是准确的描述吗?
Redis呢?这是否以类似的方式工作?换句话说,它是否缓存从后端数据库接收的数据?我一直在读 Redis 是一个键值存储解决方案,对我来说,这听起来更像是数据库服务器与数据库缓存解决方案的替代品。
任何帮助理解每个是什么以及有什么区别将不胜感激。
谢谢布拉德
我通过源安装了 memcached 服务器,并且可以获得为 1 个 memcached 服务器实例安装的标准启动脚本,但是通过谷歌尝试了几个脚本,找不到一个可以在启动时管理多个 memcached 服务器实例的自动启动的脚本。我已经尝试了这两个脚本,但都不起作用,service memcached start 只是返回到命令提示符,没有启动 memcached 服务器实例
然而,这个 bash 脚本可以工作,但在启动时没有启动 memcached 实例?
#!/bin/sh
case "$1" in
start)
/usr/local/bin/memcached -d -m 16 -p 11211 -u nobody
/usr/local/bin/memcached -d -m 16 -p 11212 -u nobody
;;
stop) killall memcached
;;
esac
Run Code Online (Sandbox Code Playgroud)
操作系统:Centos 5.5 64bit Memcached = v1.4.5 Memcache = v2.2.5
任何人都可以指向我一个有效的 /etc/init.d/ 启动脚本来管理多个 memcached 服务器?谢谢
编辑:谢谢垫子,这是最终工作的代码
#!/bin/sh
# chkconfig: - 80 12
# description: The memcached daemon is a network memory cache service. …Run Code Online (Sandbox Code Playgroud) PHP 有几个会话设置来控制垃圾收集(即删除过期会话)发生的可能性。
我的问题是:这个概率是否适用于任何给定 Apache 服务器上所有虚拟主机上的所有运行 Apache 线程?
例如:
我正在尝试衡量是否需要调整给定 VirtualHost、整个服务器或其他内容的 gc_probability 设置。
我们严重依赖内存缓存,每月处理数十亿次请求。我们有 5 个内存缓存服务器。昨晚,我们的流量增加了 25%。图表显示每个内存缓存传输的请求和数据增加并导致它们崩溃。它开始了连锁反应,每个内存缓存服务器一个接一个崩溃(每个服务器的负载增加)。
我们在系统日志、消息、内存缓存日志文件中没有发现日志(详细设置已关闭)。
我有两个问题:
我怎样才能找出为什么会发生这种情况。如果负载是 memcache 的一个问题,是否有任何关于普通 memcache(在合适的配置上运行)可以处理多少的文档。我怎样才能增加这个值。
我怎样才能确保他们永远不会再倒下。它最终影响了我们的 mysql 服务器和复制,并影响了许多其他相关服务。我需要更多的内存缓存服务器吗?
我使用这个 init.d 脚本启动了我的 memcache:http : //pastebin.com/wfMnB4ta 其中 ENABLE_MEMCACHE 在 /etc/default/memcached 中是 YES
在/ usr /共享/分布式缓存/脚本/启动memcached的:http://pastebin.com/LaUugXye
谢谢
让我先说这是本主题的后续问题。
通过将 memcached 服务器从 Solaris (SmartOS) 切换到 Ubuntu 来“解决”这个问题。现在我们已经将负载增加了大约 5 倍,并且再次遇到问题。
我们正在运行一个大约每分钟处理 1000 个请求的站点,每个请求以大约 3 次读取和 1 次写入命中 Memcached。所以负载大约是每秒 65 个请求。缓存中的数据总量约为 37M,每个键包含的数据量非常小(JSON 编码的整数数组,小于 1K)。
我们在这些页面上设置了一个基准测试脚本,并将数据输入 StatsD 进行记录。问题在于,Memcached 需要很长时间才能响应的峰值。这些似乎与流量高峰无关。

什么可能导致这些尖峰?为什么 memcached 会占用一秒钟的时间来回复?我们刚刚启动了第二台服务器以放入池中,它在峰值的频率或严重性方面没有任何明显的差异。
这是服务器上 getStats() 的输出:
Array
(
[-----------] => Array
(
[pid] => 1364
[uptime] => 3715684
[threads] => 4
[time] => 1336596719
[pointer_size] => 64
[rusage_user_seconds] => 7924
[rusage_user_microseconds] => 170000
[rusage_system_seconds] => 187214
[rusage_system_microseconds] => 190000
[curr_items] => 12578
[total_items] => 53516300
[limit_maxbytes] => 943718400
[curr_connections] => …Run Code Online (Sandbox Code Playgroud)