-
2009-06-30
Mysql关于sleep进程 - [mysql]
最近公司更换新服务器,出了不少问题,用户登录不上,初步诊断Mysql服务器问题,然后在服务器下uptime和top,发现负载平衡最高达到了36,mysql的CPU占用到了90%,真是大跌眼镜。
进入Mysql,show processlist,有200多个sleep进程,并且有locked进程。杀掉locked,优化了该条语句。但是情况还未好转,后来问了DBA,发现他正进行mysql大数据的操作,汗死。随后关掉网站,提示用户。
过了两天,数据导完。发现sleep进程还是特别多,发现程序用了长连接,pconnect()的链接方式会检查是否有已经存在的链接,如果有的话就是用旧的链接,没有才会开启新链接。mysql_close无法关闭。这种连接方式会占用部分资源,如果不及时关闭,性能不佳的服务器甚至会导致瘫痪。
因此想到修改配置文件:interactive_timeout,wait_timeout这两个值,默认是8小时,改未60秒。然后后台运行kill掉sleep进程的PHP。
可问题是:DBA说sleep连接不用杀,因为系统用得到,我想可能是别的部门在用这台Mysql服务器吧,也就没管了,因为processlist的时候,看到的sleep进程不是我们这边发起的,也就没管了。记录下。
-
2009-06-25
轻量级持久存储系统 MemcacheDB - [DB]
注:memcached可能简称mc,memcachedb可能简称mcdb
一、memcachedb是什么
mcdb是一款分布式键值持久存储系统,由新浪开源。mcdb基于mc协议,所以可以使用mc客户端直接使用,存储引擎方面使用Berkeley DB,支持主从复制模式。
二、memcachedb的应用场景
首先,我们从基本的数据存储的角度看mysql、memcached、memcachedb的区别和特点,当然它们肯定不只这点区别。
mc因为是非持久存储的,所以它的定位就是缓存。
而mcdb不是用来做缓存的,它是和mysql同个层次的东西。不一样的是,mcdb性能要比mysql高,而mysql检索功能比mcdb强。如果非要从缓存的角度看的话,那mc就是缓解mysql读压力,而mcdb则是缓解mysql写压力。
mcdb适合应用的场景:
1.浏览/点击/等统计,也可以局部代替mysql的count函数
2.标志,例如,JE的“我在干什么”功能
3.频繁写的地方,访客列表、评论之类的
之前,我写过的feed设计最大特点是使用mcdb来分散写压力,对sns来说动态产生太频繁了,全部写进mysql压力太大了,毕竟读/写1K和100K性能不是一样的,一台mcdb和一台mysql的成本不一样啊。。
虽然mcdb的方式比较简单,但是应用场合还是很丰富的,使用新产品要发散思维,充分发挥想象力~
不过重要的数据还是不建议使用,感觉还不是很放心。
三、安装
安装MemcacheDB之前需要安装Libevent和Berkeley Db
1.先安装libevent
下载地址: http://www.monkey.org/~provos/libevent/- tar zxvf libevent- 1.4 . 9 -stable.tar.gz
- cd libevent-1.4 . 9 -stable
- ./configure
- make
- make install
2.安装Berkeley Db
下载地址:http://www.oracle.com/technology/software/products/berkeley-db/index.html- tar xvzf db- 4.7 . 25 .tar.gz
- cd db-4.7 . 25 /
- cd build_unix/
- ../dist/configure
- make
- make install
安装完后,编辑/etc/ld.so.conf把- usr/local/lib
- /usr/local/BerkeleyDB.4.7 /lib
3.安装memcachedb
下载地址:http://code.google.com/p/memcachedb/downloads/list- tar xvzf memcachedb- 1.2 . 0 .tar.gz
- cd memcachedb-X.Y.Z
- ./configure --enable-threads
- make
- make install
4.创建数据保存点- mkdir /data/ 21201 -p
- chown -R willko:wheel
四、使用
1.单机模式- memcachedb -u willko -p 21201 -d -r -H /data/ 21201 / -v >/data/ 21201 .log 2 >& 1
2.主从模式- memcachedb -p 21210 -d -r -u willko -H /data/21210_m -N -R 127.0 . 0.1 : 31210 -M
- 主服务器,用31210 来同步数据
- memcachedb -p 21211 -d -r -u willko -H /data/21211_from_local_21210 -N -R 127.0 . 0.1 : 31211 -O 127.0 . 0.1 : 31210 -S
- 从服务器,主从模式-R是必须设置的。
关于-C和-N选项涉及到数据完整性,会在下面会说明一下
五、备份和恢复
1.热备份
因为memcachedb是基于bdb的,所以可以用bdb自带的热备份工具备份- [root @srv willko]# /usr/local/BerkeleyDB. 4.7 /bin/db_hotbackup -h /data/ 21201 / -b ./bak/
- -h是数据的目录
- -b是备份的目录
恢复的话,启动memcacedb的数据目录设置成备份目录就可以了
六、一点抱怨
目前,持久存储系统产品非常的多,我觉得未来的持久存储肯定不只提供hash table存储,还应该把加入list、tree等的支持。这些都可以扩大持久存储系统的应用场景,未来持久存储系统成熟的时候,将会大规模代替RMDB。
最近,有个亮点产品出现,叫redis,目前还只是beta。 -
2009-06-18
Linux命令+NFS配置+show processlist - [linux]
Linux :http://hi.baidu.com/shengit/blog/item/3f61d48a6b4521769e2fb49b.html
NFS:http://www.freebsd.org/doc/zh_CN/books/handbook/network-nfs.html
http://server.ccw.com.cn/yyjq/htm2008/20080415_407746.shtmlshow processlist:http://hi.baidu.com/24xinhui/blog/item/e2947f13621a96d8f7039edb.html







