magent编译及常见错误解决办法

# 编译magent

cd /home/lnmp/src
mkdir magent
cd magent/
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig && sed -i “s#LIBS = -levent#LIBS = -levent -lm#g” Makefile
make
mkdir -p /usr/local/webserver/magent/bin
cp magent /usr/local/webserver/magent/bin/magent
cd ../

错误1:

gcc -lrt -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c
magent.c: In function ‘writev_list’:
magent.c:729: error: ‘SSIZE_MAX’ undeclared (first use in this function)
magent.c:729: error: (Each undeclared identifier is reported only once
magent.c:729: error: for each function it appears in.)
make: *** [magent.o] Error 1

解决办法:

vim ketama.h

在文件头号部加入

#ifndef SSIZE_MAX
#define SSIZE_MAX     32767
#endif

然后再make即可.

相关教程:

memcached 集群单点故障解决方案:http://blog.haohtml.com/archives/12145

 

Memcached代理软件 magent

magent是一款开源的Memcached代理服务器软件。
命令参数:

-h this message
-u uid
-g gid
-p port, default is 11211. (0 to disable tcp support)
-s ip:port, set memcached server ip and port
-b ip:port, set backup memcached server ip and port
-l ip, local bind ip address, default is 0.0.0.0
-n number, set max connections, default is 4096
-D don't go to background
-k use ketama key allocation algorithm
-f file, unix socket path to listen on. default is off
-i number, max keep alive connections for one memcached server, default is 20
-v verbose

使用方法:

magent -s 10.1.2.1 -s 10.1.2.2:11211 -b 10.1.2.3:14000

另外有一个java版的memcache session manager的管理软件.主要用在tomcat的.https://code.google.com/p/memcached-session-manager/

另外还有一个[转]Twemproxy——针对MemCached与Redis的代理

memcached 集群单点故障解决方案

magent是一款开源的Memcached代理服务器软件,其项目网址为:http://code.google.com/p/memagent/

一、安装步骤:
1、编译安装libevent:

wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable/
./configure --prefix=/usr
make && make install
cd ../

2、编译安装Memcached:

wget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6/
./configure --with-libevent=/usr
make && make install
cd ../

3、编译安装magent: Continue reading

由浅入深理解索引的实现

00 – 背景知识

– B-Tree & B+Tree

http://en.wikipedia.org/wiki/B%2B_tree
http://en.wikipedia.org/wiki/B-tree

– 折半查找(Binary Search)

http://en.wikipedia.org/wiki/Binary_search_algorithm

– 数据库的性能问题

A. 磁盘IO性能非常低,严重的影响数据库系统的性能。
B. 磁盘顺序读写比随机读写的性能高很多。

– 数据的基本存储结构

A. 磁盘空间被划分为许多大小相同的块(Block)或者页(Page).
B. 一个表的这些数据块以链表的方式串联在一起。
C. 数据是以行(Row)为单位一行一行的存放在磁盘上的块中,如图所示.
D. 在访问数据时,一次从磁盘中读出或者写入至少一个完整的Block。 Continue reading

varnish英文手册生词

当客户端请求相同的页面时.varnish只发送一个请求到后端(backend)机器,等后面返回数据信息的时候再copy多份

serve – 服务

plethora – 过多

encounter – 遇到

hopefully – 希望

Guru – 领袖

meditation – 冥想

relevant – 有关

probably – 可能

clue – 线索

ransaction – 交易 Continue reading

如何构建千万用户级别后台数据库架构设计的思路

导读

关于如何构建千万级别用户的后台数据库架构话题,在ITPUB及CSDN论坛都有不少网友提问,新型问答网站知乎上也有人提问,并且顺带梳理了下思路,方便更多的技术朋友有章可循,整理一篇抛砖引玉性的文章。

一、技术朋友给出的背景资料

(1).     网站型应用,主要指:SNS社交网站、新闻门户型网站、邮件系统、SNS Game社交游戏、电子商务网站、即时通信IM等类型系统;

(2).     注册用户为千万级别,也即1KW注册用户以内; Continue reading

图解”How MySQL Replication Works”

示意图:

在使用MySQL的应用中,如果你的MySQL Server压力逐渐增大,在应用层优化已经到了一定瓶颈时,那么你应该首先考虑MySQL_Replication。本文将利用图示的方式简单的描述出MySQL Replication是如何工作的。

如何同步

  1. 主库将所有的更新操作,写入二进制日志。
  2. 从库运行”IO线程”(Slave IO Thread)读取主库的二进制日志。
  3. 从库运行”SQL线程”(Slave SQL Thread)执行IO线程(Slave IO Thread)读取的日志中的SQL,从而保持和主库的一致。

如何分配请求

  1. 目前,这部分需要在应用层实现。
  2. 执行更新SQL(UPDATE,INSERT,DELETE)时,请求主库。
  3. 执行查询SQL(SELECT)时,请求从库。

所以,当你的应用(Application)SELECT请求所占的比率越大,那么Relication就会越有效。

相关教程:

MySQL传输二进制日志原理:http://blog.haohtml.com/archives/12094

MySQL传输二进制日志原理

摘自:http://www.orczhou.com/index.php/2011/11/how-mysql-send-the-binary-log/

MySQL Replication可以很方便的用来做应用的读扩展,也可以帮MySQL实现一定程度的HA方案。MySQL通过向备库传送二进制日志来实现Replication,本文将通过二进制日志相关源代码的主要接口来解释:“MySQL如何传输二进制日志,是主库推,还是备库拉?MySQL日志传输的实时性如何?”。

在MySQL Replication结构中,备库端初次通过CHANGE MASTER TO完成Replication配置,再使用start slave命令开始复制。更细致的,备库通过IO Thread向主库发起读取binlog的请求(COM_BINLOG_DUMP命令),主库收到COM_BINLOG_DUMP请求后,使用单独线程(dump thread)不断向备库IO Thread发送Binlog。示意图: Continue reading