配置php下的mysql连接池-sqlrelay

作者 : admin 于 2010年05月20日, 22:13:50
2010
05-20

本文主要介绍sqlrelay的配置安装。通过其性能和一些具体环境的测试来帮助开发者应用在相应的场合中去应付大并发的mysql数据库连接。

什么是sqlrelay?

Sqlrelay是一个开源的数据库连接池软件。它可以预建立数据库连接,同时可作为数据库连接代理和负载均衡器使用。

SQL Relay is a persistent database connection pooling, proxying and load balancing system for Unix and Linux.

Sqlrelay项目主页 http://sqlrelay.sourceforge.net/
Sqlrelay源码下载 http://sqlrelay.sourceforge.net/download.html

Sqlrelay原理示意:

连接池示意图:

pool

负载均衡示意图:

router

1、 sqlrelay的安装

下载源代码(因为不能yum或者apt-get)
#wget http://prdownloads.sourceforge.net/sqlrelay/sqlrelay-0.41.tar.gz?download
解压缩
#tar –zxvf sqlrelay-0.41.tar.gz
配置
#cd sqlrelay-0.41
#./configure –prefix=/opt/sqlrelay –with-mysql-prefix=/opt/mysql-5.0.22 –with-php-prefix=/opt/php-5.2.6 –disable-python
注释:因为我用的python版本跟sqlrelay版本稍有纠结,所以显式得去声明不增加python下的api。
为啥我软件编译目标路径是/opt,我也不知道,也许第一次看见某人这么做的,我也就一直这么做。大家别问了,没啥道理,其实编译到 /shit 下边,也不影响正常的运行。
查看编译好的文件:
#cd /opt/sqlrelay
#ls
Bin etc include lib share var
如果出现下列目录,安装“基本完毕”。
2、 sqlrelay的配置
sqlrelay有个问题,如果指定了prefix,而$prefix/bin/目录如果不在环境变量中,则主进程运行是有问题的。因为,编译完后,我们在/etc/profile中增加一条命令:
PATH=$PATH:/opt/sqlrelay/bin #此目录就是你prefix的目录

配置文件:

  1. < ?xml version="1.0"?>
  2. < !DOCTYPE instances SYSTEM "sqlrelay.dtd">
  3. <instances>
  4. <instance id="mysqlpool" port="9002" socket="/tmp/sqlrelay.socket" dbase="mysql" connections="20" maxconnections="50" maxqueuelength="5" growby="1" ttl="60" maxsessioncount="10" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass" deniedips="" allowedips="" debug="none" maxquerysize="65536" maxstringbindvaluelength="4000" maxlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="-1" listenertimeout="0" reloginatstart="no" timequeriessec="-1" timequeriesusec="-1">
  5. </instance>
  6. </instances>

这样,就配置了一个id为mysqlpool的连接池。
Port=9002 sqlrelay提供服务的端口是 9002
Dbase=mysql 要连接mysql
Connections=20 起始创建20个连接
Maxconnections=50 最大连接数 50
其他参数可以自己琢磨,在具体应用中还需要修改后边的参数,都啥含义,看字面或者看手册皆可。

启动sqlrelay:
#./sqlr-start –id mysqlpool //启动刚才定义的id为mysqlpool的连接池
关闭sqlrelay
#./sqlr-stop

3、 sqlrelayPHP api的配置

sqlrelay的PHP api扩展在编译的时候已经生成,在php的./lib/php/extensions/no-debug-non-zts-20060613/ 目录下,修改php.ini中extension_dir的值:extension_dir=”/opt/php-5.2.6/lib/php/extensions/no-debug-non-zts-20060613/”
而后增加引用声明:extension=sql_relay.so

重启php,执行 php –m 查看是否有 sql_relay 如果有,则证明配置成功。

4、sqlrelay的使用

$con=sqlrcon_alloc(“mysqlpool”,9002,””,”root”,”123456”,0,1);
Var_dump($con);

这样,利用sqlrelay的phpapi,就可以跟mysql建立链接。

————————————————————————————————-

另求高并发的测试环境搭建方案,有经验的朋友可以提供相关信息。注:本人只有非常SB的惠普V3000系列高发热强雪花屏笔记本一台做测试环境。

iostat安装

作者 : admin 于 2010年05月10日, 10:42:30
2010
05-10

原来一直以为iostat跟iftop一样是独立的安装包,后google发现是一个工具包中的工具,叫systat。

下载地址:http://pagesperso-orange.fr/sebastien.godard/download.html

使用说明书 http://pagesperso-orange.fr/sebastien.godard/man_iostat.html

samba配置小结

作者 : admin 于 2010年05月06日, 13:18:07
2010
05-6

最近想把本本彻底改成linux,前期准备就是要适应一切能想到的应用。跟台式的文件交互,ftp、ssh都可以,但还是觉得共享会方便,于是配置了一下samba。

本子上的系统用的是centos5.4 X64,samba软件是使用命令 yum install samba 进行安装。

首先,启动关闭samba命令

  1. service smb start
  2. service smb restart
  3. service smb stop

首先配置一个公共的读写目录

  1. mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
  2. touch /etc/samba/smb.conf
  3. #smb.conf 内容为
  4. [global]
  5. workgroup = home
  6. netbios name = notebook
  7. server string = Samba Server
  8. security = share
  9. [public]
  10. path = /home/public
  11. browseable = yes
  12. writeable = yes
  13. guest ok = yes
  14. public = yes
  15. force user = nobody
  16. force group = nobody

重启samba后,在windows中运行(局域网互联) 敲入 \\ip 则可以看到public共享目录

如果增加权限验证,则需要增加用户信息:samba用以下两个命令来增加用户信息

  1. smbadduser   //增加用户
  2. mbpasswd     //增加密码

配置文件如下

  1. [global]
  2. workgroup = ksgdfa
  3. netbios name = ksgfdsa
  4. server string = Samba Server
  5. security = share
  6. encrypt passwords = yes
  7. smb passwd file = /etc/samba/smbpasswd
  8.  
  9.  
  10. [public]
  11. path = /home/public
  12. browseable = yes
  13. writeable = yes
  14. guest ok = yes
  15. public = yes
  16. force user = nobody
  17. force group = nobody
  18.  
  19. [sunboyu]
  20. path = /opt/samba/sunboyu
  21. browseable = yes
  22. writeable = yes

补充:其中,公共目录的权限,用配置成 nobody:nobody 777
而 sunboyu 目录的权限,则配置成 sunboyu:sunboyu 777

tips:如果配置成功后,一直无法写入文件,则检查是否关闭selinux,如果没关闭,关闭即可。