易截截图软件、单文件、免安装、纯绿色、仅160KB

Apache::DBI与MYsql的持续连接太多的问题

我经过这几天研究发现mod_perl提供的持续连接并不智能(也许是我还没有找到更
好的解决方案),如果脚本中的参数和初始化的参数不一样,在内存中会出现两个
句柄。
Apache::DBI->connect_on_init("DBI:mysql:mysql:localhost","root","root",
{
PrintError => 1,
RaiseError => 0,
AutoCommit => 1,
});

my $dbh = DBI->connect("DBI:mysql:database=localhost","root","root",{
PrintError => 1,
RaiseError => 0,
AutoCommit => 1,
});
以上两个语句实现同一个连接,返回同一种结果,但是他们的概念完全不一样。
经过统一参数,写作方法,和格式。测试后,发现process不再无故增长,达到预
期效果。
事故原因分析:对于一个数据库,Apache::DBI建立一个持续连接, 如果在
startup.pl文件中初始化的时候采用一种书写格式,参数,而脚本中
DBI->connect又采用不同的连接方式和格式,因此假如一个以上的句柄实现同一个
目的(连接同一个数据库)的话,最后一个连接进入时,它会企图查找最后一个相
匹配的句柄(Handler),换句话说就是找一个参数,格式都一样的句柄。这里问题
就出来了,内存中存在两个实现同一目的的句柄(但是格式或参数不一样),这个
连接无法识别应该使用哪一个,所以被迫建立一个新的句柄,而导致原先的句柄继
续Sleep(我管它叫做僵尸句柄)。
解决方案:其实解决方法非常简单,因为昨天我也在其他操作系统上(RedHat 7)装
了Apache+Mod_perl+Mysql,仍然出现相同的问题。根据内存分析与同伴们的测
试。得出一个结论,当内存中连接同一数据库的句柄数在一个以上的时候,
process会无故增加,当句柄为一个的时候,process不会增长,而采用原有内存中
的句柄,这个就是我们想要的。为实现这一目的,我们需要统一初始化和connect
的格式,参数和相关信息。
关于并发处理:测试发现,句柄初始化在process中建立的5个连接完全可以人工控
制。修改MinSpareServers(最小空闲服务器)和MaxSpareServers(最大空闲服务器)
的数量。该数量放的越大,服务器的并发处理能力就越高。但是我们要付出的是宝
贵的内存为代价,根据网站的点击次数合理调节该数量是最为明智的选择。如果服
务器遇到大量并发请求,系统会自动克隆相应的句柄以适应并发的数量。当请求完
毕后,系统将自动断开克隆的句柄以释放沉余的内存。大家看下面的例子,我


相关文档:

mysql中时间查询函数(包括时间戳)

这些函数都是MySQL自带的,可以直接使用在PHP写的MySQL查询语句中哦
1-CURDATE()或CURRENT_DATE()和CURTIME()或CURRENT_TIME()
这两个函数是比较常用到的,顾名思义,第一个返回当前日期,第二个返回当前时间
可以在MySQL客户端或者PHP语句里写"SELECT CURDATE(),CURTIME()"查看相关信息.
还有一个很重要的函 ......

mysql乱码问题

在PHP代码段前面运行以下语句
@mysql_connect($host,$user,$password);
@mysql_query('SET NAMES "UTF8"');
@mysql_query('SET COLLATION_CONNECTION=utf8_general_ci'); 
或者在MYSQL中运行一次:
SET NAMES "UTF8";
SET COLLATION_CONNECTION=utf8_general_ci
一劳永逸
......

简单测试MySQL 5.1 表分区功能

想测试下表分区功能跟自主的分布式的性能差异,进行了简单的测试,前后花费了半个小时,可能测试数据不太准确。
【测试环境】
操作系统:Windows XP SP2
MySQL: 5.1.19-beta-community-nt-debug
【测试过程】
查看MySQL版本:
mysql> select version();
+--------------------------------+
| version() ......

tomcat+jdk+mysql免安装的整合形式

tomcat+jdk+mysql免安装的整合形式
 
一: tomcat+jdk 免安装
很久以前就开始用 tomcat 的免安装版(zip 解压版)。直接运行 bin/startup.bat 的方式运行,有一个不好的地方就是注销登录用户程序就退出了。比如 windows 2003 server 版中运行 tomcat 以提供对外服务,很可能管理员启动了 tomcat 后就退出 windows 200 ......

MySQL配置文件my.cnf中文版

来自: http://www.phpv.net/html/1666.html
#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大
#TYPE: SYSTEM
#END CONFIG INFO
#
# 此mysql配置文件例子针对4G内存
# 主要使用INNODB
#处理复杂队列并且连接数量较少的mysql服务器
#
# 将此文件复制到/etc/my.cnf 作为全局设置, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号