当前位置: 首页 > 知识库问答 >
问题:

WordPress中的Memcached请求循环或缓存踩踏

夏建弼
2023-03-14

我有一个群集的WordPress webapp,它使用由六个节点组成的Memcached集群存储WordPress的对象缓存,但我似乎遇到了某种零星的Memcached set/replace循环或缓存踩踏,偶尔会导致Memcached集群中的单个节点完全饱和Memcached和数据库网络链接。

SET/REPLACE循环或踩踏似乎是由于大量尝试“添加”WordPress“wp_:options:alloptions”键(Memcached以NOT_STORED回复所有这些特定查询)而导致的。而同时大多数MySQL查询看起来如下所示:

SELECT option_name, option_value 
FROM wp_options 
WHERE autoload = 'yes'

我对Memcached对象缓存插件(http://wordpress.org/extend/plugins/Memcached/)所做的唯一更改是默认的过期设置。

#var $default_expiration = 0; //original
var $default_expiration = 1800;

到目前为止,我已经能够通过增加Memcached守护进程的最大连接限制来缓解这个问题。我还将数据库存储引擎从MyISAM更改为InnoDB,并将APC shm_size从128M增加到1536M。

对象缓存设置/替换循环或踩踏是不可避免的,还是我当前设置的结果?

PORT="11211"
USER="nobody"
MAXCONN="10240"
CACHESIZE="4096"
OPTIONS=""

memcache版本3.0.8 memcache支持=>enabled memcache.allow_failover=>0=>0 memcache.chunk_size=>32768 memcache.compress_threshold=>20000=>20000 memcache.default_port=>11211=>11211 memcache.hash_function=>fnv memcache.hash_strategy=>confired=>一致memcache.lock_timeout=>15=>15 memcache.max_failover_attempts=>20=>20 memcache.protocol=>ascii=>ascii memcache.redundancy=>1=>1 memcache.session_red undancy=>2=>2注册的保存处理程序=>文件用户memcache

APC版本=>3.1.9 APC调试=>禁用MMAP支持=>启用MMAP文件掩码=>锁定类型=>pthread互斥锁序列化支持=>断开指令=>本地值=>主值APC.CACHE_BY_DEFAULT=>On=>On APC.CANONICALIZE=>On=>On APC.COREDUMP_UNMAP=>Off=>Off APC.ENABLE_CLI=>Off=>Off APC.ENABLE_CLI=>On=>On APC.FILE_MD5=>Off=>Off APC.FILE_UPDATE_Protection=>2=>2APC.FILTER=>无值APC.GC_TTL=>3600 APC.INCLUDE_ONCE_OVERRIDE=>Off=>Off APC.LAZ=y_classs=>Off=>Off APC.lazy_functions=>Off=>Off APC.max_file_size=>1M=>1Mapc.mmap_file_mask=>无值=>无值apc.num_files_hint=>1000=>1000 apc.preload_path=>无值apc.report_autofilter=>Off=>Off apc.rfc1867_freq=>0=>0 apc.rfc1867_name=>APC_UPLOAD_PROGRESS=>APC_UPLOAD_PROGRESS apc.rfc1867_prefix=>upload_apc.rfc1867_prefix=>upload_apc.rfc1867_ttl=>3600=>3600 apc.serializer=>default=>default apc.shm_segments=>1=>1 apc.shm_size=>1536m=>1536M apc.slam_defense=>On=>On=>On APC.stat_ctime=>Off=>Off APC.ttl=>0=>0 APC.use_request_time=>On=>On APC.user_entries_hint=>4096 APC.user_ttl=>0=>0 APC.write_lock=>开=>开

共有1个答案

章学义
2023-03-14

MatsLindh是对的。将随机过期添加到选项中,以最大限度地减少同时过期的条目的数量。当第一个赛车手写入缓存时,您也可以使用锁来最大限度地减少踩踏。

 类似资料:
  • 请求缓存 支持请求缓存功能,支持对GET请求设置缓存访问,并设置有效期。 请求缓存仅对GET请求有效 有两种方式可以设置请求缓存: 路由设置 可以在路由规则里面调用cache方法设置当前路由规则的请求缓存,例如: // 定义GET请求路由规则 并设置3600秒的缓存 Route::get('new/:id','News/read')->cache(3600); 第二次访问相同的路由地址的时候,会自

  • 实现原理 实现参考『Thikphp 3.2-静态缓存』, 静态缓存只能提供HTML的缓存且只能以文件形式进行缓存。而请求缓存,支持ajax/html的缓存,而且可以根据缓存配置自行切换文件/redis的缓存 缓存检测: 行为app_begin时,检测路由是否需要有缓存,有则返回缓存内容(\Common\Behavior\ReadRequestCacheBehavior) 缓存更新: 行为ajax_

  • 如果url正确,我在调试导航器中看不到任何队列,因为它没有再次调用方法。我在networking库中引用了相同的内容,但我想它的工作方式与我在NSURLSession中的工作方式相同,对吗? 案例:-我检查url是否存在,所以如果存在,就加载两个url(time.txt和image.png),否则调用WebService(XmlParser)&保留以下文件的url检查。 显示哪个存在。

  • Zack Tollmanz为WordPress编写了一个新的Memcached对象缓存库。这个库基于Ryan Boren开发的WordPress Memcache插件。 WordPress带有一个默认的对象缓存。可以通过将一个名为object-cache.php文件的文件复制到wp-content文件夹的根目录中来替换这个默认缓存。object-cache.php文件将包含替换对象缓存的实现。 T

  • 问题内容: 我正在尝试在node中制作简单的feed阅读器,并且遇到了node.js中多个请求的问题。例如,我得到的表带有如下网址: 现在,我想获取每个URL的内容。首先的想法是使用,但这不是一个好主意。最好的选择是异步执行,但我不知道如何制作。 有任何想法吗? 编辑: 我得到以下代码: 问题在于,首先是循环中每个元素的调用行“ http.get …”,并在该事件之后调用response.on(’

  • 问题内容: 我是angularJS的新手,对缓存等有疑问。 我有一个包含两个步骤的向导,我希望能够单击“返回”和“下一步”,并在用户拥有表单时仍然填写表单。 在我的page1Partial中,我有这个: 当我转到下一页时,请清除复选框,这是因为再次调用了我对Java服务的RESful调用。如何缓存此响应? 从我的控制器,这每次都会打到我的REST Web服务。 我的服务 问题答案: 从1.1.2(