【问题标题】:Huge difference between misses and hits at php-apcphp-apc 的未命中和命中之间的巨大差异
【发布时间】:2014-01-13 16:03:20
【问题描述】:

我只是想不通,我的配置哪里出错了,因为我错过了太多而命中率太低了。最终导致内存泄漏。

看看你自己。请注意,我使用的是 APCu 而不是 APC。

http://i.stack.imgur.com/3DPxo.png

您对我可能做错了什么或出了什么问题有任何想法吗?

是的,我知道以下问题和答案:APC Hits/Misses and configuration。然而,经过多次调整配置,我仍然无法理解为什么会有这么多的失误。

我有一个简单的元搜索应用程序,其中所有搜索结果都使用 APC 进行缓存。以下代码演示了我如何处理此类数据。

$dynamic_variable = "query_{$query}_page$this->page"; // This is just one case of many.

// Get Data from Cache
$cache_variable = "api1_{$dynamic_variable}_cached";
$result         = $this->cache->get($cache_variable);

if ( ! $result) {
    $result = .....
    $this->cache->save($cache_variable, $result, $this->cache_timeout);
}

return $result;

顺便提一下,该应用目前正在使用 CodeIgniter 2.1.4,并迁移到 https://github.com/ellislab/codeigniter/tree/release/3.0

【问题讨论】:

  • 检查这个SO问题stackoverflow.com/questions/10446229/…希望你能在那里找到答案
  • 我预计会错过......但不会那么多。
  • 我对 apcu 不熟悉。但是,鉴于您有大量未使用的内存,显而易见的解释是,您放入缓存中的内容永远不会被再次请求,或者您从缓存中请求的东西永远不会被放入其中。
  • @rambocoder APCu 本质上只是去掉了操作码缓存的 APC——它现在只是一个客户端缓存,其想法是从 5.5 开始使用 OpCache 来进行操作码缓存

标签: php codeigniter memory-leaks apc


【解决方案1】:

在屏幕截图中,服务器报告它只启动了 8 分钟 - 这几乎不足以获得稳定的图片。

尝试检查其处理实际流量之后的数字。

更新

自从在上面发布答案后,图像已从 this 更新为 this - 是的,在更新后的图像中,点击率异常低。答案在于您的代码或人们如何使用该网站 - 而不是在 APC 中。

1 的满贯防守没有多大意义。

我怀疑如果您使用一组已知的请求进行测试,您会发现它会产生可预测的命中率。你在储存什么?如果您使用会话,则可能是您的代码有问题(例如,在发送标头后调用 session_start())。

【讨论】:

  • 我刚刚重新启动php-fpm,因为我仍在调整部分。但是,即使过了几个小时……命中率也太高了。我会更新,让你看到
  • 确实,我所有的结果、查询等等……都被缓存了。绝对的一切。检查我的问题更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 2013-06-23
相关资源
最近更新 更多