`

Memcached 相关问题

阅读更多
1. memcached 将内存分成若干大小按比例增加的slab,LRU 是在slab内进行的。

2. 系统启动时,给各个slab预分配一定的内存。剩下的内存(A)不属于任何slab。当某个slab内存不足时,从(A)中分配,分配之后就永远属于该slab了,如果(A)中没有内存,则该slab上发生LRU。这也是给各个slab预分配内存的原因,防止slab需要内存从(A)中分配时,(A)中无内存可用,预留的内存保证了该slab上有至少有预留内存可用。

3. memcached 运行一段时间,(A)中内存必然耗尽,如果在此之前,某个slab从来没有存储过数据,那么该slab上可用的内存就是预留内存,这导致如果该slab突然需要存储数据,该slab发生LRU的概率就很大,因为预留内存很小。举例说明:memcached中存储的都是很小的数据,小数据slab很快耗尽了(A)中的内存,如果要存储大数据,大数据所在的slab只有预留内存可用,而预留内存通常很小,导致大数据频繁的LRU,这通常严重影响性能。

4. 客户端通过hash使用memcached池,存在某个key导致某个memcached实例负载/IO高的可能。例如,某个key存放的是大数据,该key的访问量很大,那么这个key所在memcached网络IO会比其它机器高。

5. 一个用户反映它的mecached的内存使用率不足50%,但是某个key经常刚set进去就get不出来。这个memcached池有4台memcached组成,我随机挑了两台stats,的确没有LRU发生。我换了另一个key,重现该问题。这是怎么回事?我想了很久,最后老老实实的在每台机器上stats,发现有一台机器的内存使用率很高,这台机器有LRU,我和用户的key都落在了这台机器上。因为其它3台机器最近重启过,这导致整体的内存使用率看起来很低。

6. 我觉得redis也免不了这些问题。
分享到:
评论

相关推荐

    Memcached相关DLL文件

    下面是一些可能包含在"Memcached的DLL相关文件"压缩包中的关键DLL文件及其功能: 1. libevent.dll:这是Memcached依赖的一个事件库,用于处理网络事件和I/O复用。Libevent提供了异步事件通知机制,使得Memcached...

    Memcached相关jar包

    Memcached相关jar: java_memcached-release_2.6.6.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar log4j-1.2.15.jar commons-pool.jar

    memcached安装软件 libevent magent memcached

    本篇文章将详细讲解如何安装和配置memcached,以及与之相关的libevent和magent。 首先,我们需要了解libevent库。libevent是一个事件通知库,它允许程序处理多个网络连接,并有效地处理来自不同源的事件。在安装...

    memcached服务器端memcached.exe 下载

    的引用,重启PHP服务,就可以在PHP脚本中调用memcached的相关函数进行缓存操作了。 memcached支持多种编程语言的客户端,包括PHP、Python、Java、Ruby等,其核心特性包括: 1. **分布式**:memcached可以自动将...

    windows下memcached+memcached.dll 5.3.8

    在标签中,`php`表明这个过程与PHP编程语言相关,意味着在Web开发环境中使用Memcached来缓存PHP应用的数据。 总结来说,这个主题涉及了Windows环境下Memcached的安装、配置和使用,以及与PHP的集成。通过安装和配置...

    Memcached相关程序

    这个压缩包文件包含了与Memcached相关的程序实例,这为我们提供了学习和理解Memcached工作原理以及如何在.NET 3.5框架下进行集成的机会。 1. **Memcached简介**: - Memcached是一个开源项目,最初由Danga ...

    memcached-1.5.4

    本文将详细介绍`memcached-1.5.4`版本的源码特点、编译过程以及相关知识。 1. **memcached简介** - `memcached`的核心设计理念是简单而高效,提供了一个键值对存储的接口,支持多线程服务,使用libevent库处理网络...

    memcached工具类源码

    这里我们将深入探讨解压后的"memcached工具类源码"及其相关知识点。 1. **Memcached基础概念** - **内存存储**:Memcached基于内存进行数据存储,这意味着它的读取速度非常快,但同时也意味着数据不持久化,如果...

    memcached启动错误解决

    通常,memcached用户是memcache或者nobody,确保这些用户对相关目录有读写权限。 **五、调整内存设置** 默认情况下,memcached会尝试使用所有可用的物理内存。如果内存不足,启动会失败。在配置文件中限制memcached...

    php7 的memcached扩展php_memcached.dll扩展

    在浏览器中查看输出,确认`Memcached`部分显示了相关信息。 6. **使用Memcached**:现在你可以开始编写PHP代码来使用Memcached服务了。以下是一个简单的示例: ```php $memcached = new Memcached(); $...

    memcached+tomcat的session共享

    2. 配置memcached客户端的相关属性,如服务器地址、端口、超时时间等。 3. 对于Spring框架的应用,可能还需要在Spring配置文件中进行相应的调整。 然后,Tomcat会在每次session创建、更新或删除时,通过memcached...

    memcached管理session资源

    在实际应用中,我们还需要考虑安全性问题,比如Memcached服务器的数据加密、防止未授权访问以及定期清理过期session等。此外,监控和日志记录也是必不可少的,以便于排查问题和优化性能。 总之,使用MSM结合...

    memcached tomcat 共享session

    这些文件可以帮助用户了解如何安装和使用memcached,以及获取更多相关知识和资源。 总的来说,通过memcached与Tomcat共享session,可以有效地在分布式环境中解决Session管理的问题,提高系统的可扩展性和可用性。...

    memcached-1.2.1-win32.zip 和 java_memcached-release_1.6.zip

    这表明我们正在处理的是与Memcached相关的开发资源,一个是Windows上的Memcached服务器版本1.2.1,另一个是Java客户端库的release 1.6。 描述中提到,这些资源适用于基于Java的Memcached数据缓存的开发。这暗示我们...

    memcached经典面试题和答案

    - **更新数据**:当数据发生变更时,不仅需要更新数据库,还需要通知 Memcached 清除相关缓存条目。此外,在高并发环境下,可以通过程序预先推送更新后的数据到 Memcached,以确保缓存的最新性。 #### 四、...

    memcached开发完整demo

    这通常包括`libmemcached`库和相关的头文件,可以在Linux或Unix系统上通过包管理器如`apt-get`或`yum`来安装。例如,在Ubuntu上,你可以运行以下命令: ```bash sudo apt-get install libmemcached-dev ``` 在...

    Memcached原理和使用详解

    文件详细描述了Memcached相关原理和使用方法,内容包括:Memcached原理介绍、Memcached安装和使用说明、Memcached使用的技巧等。

    memcached整合hibernate资源合集

    在“memcached整合hibernate资源合集”中,我们可以找到如何将这两者结合使用以优化应用性能的相关资料。整合Memcached和Hibernate的主要目的是利用缓存机制来减少对数据库的直接访问,从而提高系统的整体性能。 ...

    .Net中使用Memcached的相关资料

    .Net中使用Memcached的相关资料整理.NET memcached client library

Global site tag (gtag.js) - Google Analytics