Memcached/Libmemcached使用经验总结(一)
来源:互联网 发布:ucm指标源码 编辑:程序博客网 时间:2024/05/17 01:12
Memcached/Libmemcached使用经验总结(一)
kejieleung
一、编译
1.编译Memcached(C++服务器端)
目前最新版本 1.4.4
确认系统已安装libevent
$ tar -zxvf memcached-1.x.x.tar.gz
$ ./configure
$ make
$ make test
$ sudo make install
2.编译Libmemcached(C++客户端)
目前最新版本 0.37
1. 编译0.37版本编译出现错误
undefined reference to `__sync_fetch_and_add_4'
由于编译器设置所到,加上以下的标识,再./configure一下
export CFLAGS="${CFLAGS} -march=i486"
另外对于CentOS配置优化编译参数可提高性能
2. 安装完后加入连接
ln -s /usr/local/lib/libmemcached.so.2 /usr/lib/ 共享库才可以被其它程序加载到
3. 编译静态库
./configure --enable-static
(可以使用 ./configure --h查看编译选项)
4. 带tcmalloc编译
编译libmemcached时发现有一个选项,编译时可以带上 tcmalloc,只是没测试过高并发下性能会不会提高。
(1) libmemcache客户端会做大量的malloc和free操作,每次get都会malloc和free一次,这个选项应该会有效果的
(2)服务端应该会采用内存池去管理,应该不会频繁进行malloc和free操作
二、配置
1.启动参数
1)/usr/local/bin/memcached -d -u daemon -l xxx.xxx.xxx.xxx -p 11211 -m 2048 -n 48 -f 1.15 -c 800000
-d 以守护进程方式运行
-c 为必定指定参数,打开文件(socket)上限,以支持大量连接,由于修改系统配置,需要以root帐号执行
-l 绑定ip
-p 绑定端口
-m memcached进程分配的内存量,由于32位机器寻址限制,通常是分配2G内存到一个memcached进程,并启动多个进程(但需要注意的是,当内存不足时,会临时使用交换分区,导致性能大幅度下降)
-n 初始分配块的大小( slab块)
-f 增长系数( 当数据块超出当前系统已分配的slab内存块时,会再申请一个更大的内存块,而且存储是定长的,默认系数是2, 即本次分配大小发N,不足时再分配大小为2N的内存块。为了提高利用率,所以设定较少的增长系数)
另外可以通过配置参数 -P 指定生成进程pid到文件,这样可以方面通过这个pid来kill掉进程(详见附件tool里的start_memcached.sh/stop_memcached.sh脚本)
2)查看/修改系统 ulimit参数, ulimit -n 800000. 客户端连接也可支持这样的大量连接
3)注意客户端通过设置.ini文件里,的 MaxOpenFile 大小,设置过低会导致大量连接错误
4)如果机器上装有多个memcached版本,注意执行的路径
对于Memcached的使用和详细介绍,可以看一下《memcached全面剖析》
http://docs.linuxtone.org/memcached/memcached%E5%85%A8%E9%9D%A2%E5%89%96%E6%9E%90.pdf
- Memcached/Libmemcached使用经验总结(一)
- 使用libmemcached访问Memcached
- 【Memcached】libmemcached API使用
- memcached,libmemcached,python-libmemcached安装
- 使用连接池访问memcached(libmemcached)的完整例子
- install php memcached libmemcached
- memcached libmemcached 下载安装
- c libmemcached连接memcached
- 封装 libmemcached 构建 memcached 客户端
- libmemcached C++使用示例
- 基于libmemcached,php扩展memcached的安装
- Memcached and libmemcached Installation on Solaris 11
- memcached 和libmemcached 安装及关系
- libmemcached支持连接池访问memcached
- linux 安装memcached libmemcached libevent freetds
- libmemcached的C-API访问memcached server
- libmemcached
- allegro使用经验总结(一)
- ServletConfig接口
- JDialog 和 主JFrame之间
- C#索引器Week例子
- Java中如何使用组件实现文件上传下载
- 嵌入式linux之问题
- Memcached/Libmemcached使用经验总结(一)
- 开篇语
- asterisk 移植到 嵌入式linux ppc_6xx 环境下
- VC++ 6.0 建立类向导(class wizard)错误提示Parsing error: Expected =.Input Line:
- [SQL]对于“无法用TCP/IP协议和远端SQL Server数据库连接”问题 收藏
- Java中的数组学习
- PCI开发
- Windows让我们养成了什么臭毛病 本篇文章来源于 黑基网-中国最大的网络安全站点 原文链接:http://www.hackbase.com/news/2010-05-10/35154.html
- 杭州杰科网络设备有限公司