雅茗居茶叶论坛
 

windows2003+IIS+mysql+php+zend+Eaccelerator

windows2003+IIS+mysql+php+zend+Eaccelerator

2.MySQL可以在http://dev.mysql.com/downloads/mysql/5.0.html#downloads下载到最新的5.0.xx版本。

3.Zend Optimizer可以去http://www.zend.com/free_download/optimizer下载最新的3.X.X版本。

4.phpmyadmin可以到http://www1.skycn.com/soft/17470.html下载2.9.2版。

二、软件的安装

1.将得到的php压缩包文件解压到D:\php\php5目录

2.定义Windows系统path环境变量,在我的电脑->属性->高级->环境变量->系统变量->找到path这个变量,点击编辑,在其后面加入安装php的路径,如D:\php\php5,注意每一个变量之间有一个“;”半角的分号分隔,如果前面的没有分号自己手工加上去。然后确定。
     若不采用配置环境变量的方法,可以使用复制.dll文件到系统目录下,效果相同。将D:\php\php5下的所有.dll后缀的文件都复制到C:\Windows\system32目录下即可。

3.为 PHP 设置一个有效的配置文件,php.ini。
     在 ZIP 包中有两个 ini 文件,php.ini-dist 和 php.ini-recommended。建议使用 php.ini-recommended,因为在该文件中优化了性能和安全。因为它从 php.ini-dist 修改而来,会对设置产生较大的影响。例如将 display_errors 设置为 off,将 magic_quotes_gpc 设置为 off。如果想要最安全的设置,这是最好的方法,虽然 PHP 在默认配置下也是很安全的。
     先将D:\PHP\php5\php.ini-recommended 重命名为 php.ini 。再用记事本打开 php.ini :
     register_globals = Off                     把off改成On (有二处)此处一般能解决运行论坛安装时出现空白的问题。
     short_open_tag = Off                     把off改成On 。
     extension_dir = "./"                         改为extension_dir = "D:\php\php5\ext" (指定动态连接库的目录,php5和php4不同的地方就是它的动态连接库目录变了,这在它的文档结构里有详细的说明)
     extension=php_mbstring.dll   这个不选的话用phpMyAdmin会出现红色提示
     extension=php_dba.dll
     extension=php_dbase.dll
     extension=php_gd2.dll     支持GD库的,一般要滴
     extension=php_imap.dll                可选
     extension=php_ldap.dll
     extension=php_mysql.dll    支持MySQL的

接下来修改了一些文件上传以及内存使用最大**:
     memory_limit = 20M          脚本运行最大消耗的内存容量
     post_max_size = 20M            闪存容量
     upload_max_filesize = 20M      附件容量
     max_input_time = 60                这是每个脚本可以消耗的时间,单位也是秒
     max_execution_time = 30         这个是每个脚本运行的最长时间,可以自己修改加长,单位秒

     upload_tmp_dir                       上传文件存放的临时路径,如:D:\php\tmp\upload_tmp
     session.save_path                   缓存文件路径,如:D:\php\tmp\session_save
4.使php.ini在windows下可以使用
   
     我的电脑->属性->高级->环境变量->系统变量->点击“添加”->变量名“PHPRC”->变量值“D:\PHP;”也就是你安装PHP的路径。

5.配置IIS,使其支持php。

     在控制面板〉添加/删除程序中正确安装IIS6。
   PHP 支持 CGI 和 ISAPI 两种安装模式,CGI 更消耗资源,容易因为超时而没有反映,但是实际上比较安全,负载能力强,节省资源,但是安全性略差于CGI,本人推荐使用 ISAPI 模式。故这里只解介绍 ISAPI 模式安装方法:
  
   
在“你需要支持PHP的Web站点”比如“默认Web站点”上单击右键选择“属性”,在打开的“ Web 站点属性”“主目录”选项卡,编辑或者添加PHP的扩展名映射即可或者将你步需要支持PHP的站点中的PHP扩展映射删除即可,“可执行文件”添加D:\php\php5目录下的php5isapi.dll,扩展名是.php。动作**为“GET,HEAD,POST,TRACE”,再添加一个后缀名为.php3的isapi扩展,**设置同.php扩展的。
  
   再打开“站点属性”窗口的“文档”选项卡,找到并点击“添加”按钮,向默认的 Web 站点启动文档列表中添加 index.php 项。您可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开 index.php 文档。
  
   确定 Web 目录的应用程序设置和执行许可中选择为纯脚本,然后关闭 Internet 信息服务管理器
对于2003系统还需要在“Internet 服务管理器”左边的“WEB服务扩展”中添加一个以.php为扩展名的isapi,设置路径为D:\php\php5\php5isapi.dll,设置状态为允许,Active Server Pages 允许。

  
     均安装完成后重起服务器,然后在 IIS 根目录下新建一个文本文件存为 php.php ,内容如下:

<?php
phpinfo();
?>




打开浏览器,输入:http://localhost/php.php,将显示当前服务器所支持 PHP 的全部信息,可以看到 Server API的模式为:ISAPI


三、安装MySQL

     直接在MySQL官方下载好mysql压缩包后,解压双击setup.exe安装,Next下一步后选择Custom自定义安装,再Next下一步选择安装路径这里我们选择D:\MySQL,继续Next下一步Skip Sign UP完成安装。

     安装完成后会提示你是不是立即进行配置,选择是即可进行配置。当然一般安装后菜单里面也有配置向导MySQL Server Instance Config Wizar,运行后按下面步骤配置并设置ROOT密码即可Next下一步后选择Standard Configuration,Next下一步,钩选Include .. PATH,Next下一步,设置ROOT密码,建议社设置复杂点,确保服务器安全!Apply完成后将在D:\MySQL目录下生成MY.INI配置文件,添加并启动MySQL服务。

四、安装Zend Optimizer
下载后得到 ZendOptimizer,直接双击安装即可,安装过程要你选择 Web Server 时,选择 IIS ,然后提示你是否 Restart Web Server,选择是,完成安装之前提示是否备份 php.ini ,点确定后安装完成。我这里安装到D:\php\Zend

   Zend Optimizer 的安装向导会自动根据你的选择来修改 php.ini 帮助你启动这个引擎。下面简单介绍一下 Zend Optimizer 的配置选项。以下为本人安装完成后 php.ini 里的默认配置代码(分号后面的内容为注释):
zend_extension_ts="D:\php\Zend\lib\ZendExtensionManager.dll"
;Zend Optimizer 模块在硬盘上的安装路径。
zend_extension_manager.optimizer_ts="D:\php\Zend\lib\Optimizer-2.6.2"
;优化器所在目录,默认无须修改。
zend_optimizer.optimization_level=1023
;优化程度,这里定义启动多少个优化过程,默认值是 15 ,表示同时开启 10 个优化过程中的 1-4 ,我们可以将这个值改为 1023 ,表示开启全部10个优化过程。

     调用phpinfo()函数后显示:
     Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies with Zend Optimizer v2.6.2, Copyright (c) 1998-2006, by Zend Technologies 则表示安装成功。

五、安装phpmyadmin

     下载得到 phpMyAdmin,将其解压到D:\php\phpmyadmin,并在IIS中建立新站点或者虚拟目录指向该目录以便通过WEB地址访问,这里建立默认站点的phpMyAdmin虚拟目录指向D:\php\phpMyAdmin目录通过http://localhost/phpmyadmin/访问找到并打开(用写字板打开避免黑码)D:\php\phpMyAdmin目录下的 config.default.php ,做以下修改:(phpMyAdmin-2.8以上版本在libraries目录下

     $cfg['blowfish_secret'] =                                  设置COOKIES加密密匙,如erenb.com则设置为$cfg['blowfish_secret'] = 'erenb.com';
    搜索$cfg['Servers'][$i]['auth_type'],默认为config,是不安全的,不推荐,推荐使用cookie,将其设置为$cfg['Servers'][$i]['auth_type']       = 'cookie';
注意这里如果设置为config请在下面设置用户名和密码!例如:
     $cfg['Servers'][$i]['user']            = 'root';        // MySQL user-----MySQL连接用户
     $cfg['Servers'][$i]['password']        = 'erenb.com';   

搜索$cfg['DefaultLang'] ,将其设置为 zh-gb2312 ;
搜索$cfg['DefaultConnectionCollation'] (如果存在)将其设置修改为gbk_unicode_ci
搜索$cfg['DefaultCharset'] ,将其设置为 gbk ;

     打开浏览器,输入:http://localhost/phpMyAdmin/ ,若 IIS 和 MySQL 均已启动,输入用户ROOT密码erenb.com(如没有设置密码则密码留空)即可进入phpMyAdmin数据库管理。
     首先点击权限进入用户管理,删除除ROOT和主机不为localhost的用户并重新读取用户权限表,这里同样可以修改和设置ROOT的密码,添加**用户等。


六、目录结构及权限配置。                                             
                                                D:\php——————D:\MySQL
                                                    |
                   +—————+———————+———————+
           php4(php5)          tmp                     Zend           phpMyAdmin

D:\php设置为管理员和SYSTEM完全权限即可,**用户均无权限
对于其下的二级目录
php5、 tmp 给EVERYONE完全权限
MySQL 、Zend 管理员和SYSTEM完全权限
phpMyAdminWEB匿名用户读取运行权限


注:以下内容未经测试,有待修改完善,仅供参考。
补充安装 Eaccelerator 加速及缓存软件
安装 Eaccelerator 加速及缓存软件,可以加速php文件的读取和运行速度,并将一些mysql查询及php文件缓存起来
减轻服务器的负担,从而达到对论坛的大幅度加速和负载能力的提高,这个软件我在许多大站上作过试验
效果非常显著!其效果可询问若干长期由我维护的大论坛站长。

安装eaccelerator非常简单,
首先,下载eaccelerator.rar
解压缩后,一个是安装说明,一个是所需要的dll文件。
将eaccelerator_win_4.4.1.dll 复制到    c:/php/extensions/




打开c:/php/php.ini
找到

[Zend]
zend_extension_manager.optimizer_ts="C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0"
zend_extension_ts="C:\Program Files\Zend\Optimizer\lib\ZendExtensionManager.dll"
zend_optimizer.optimization_level=15

替换为

[Zend]
zend_extension_ts="C:\php\extensions\eaccelerator_win_4.4.1.dll"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="c:\temp"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
zend_extension_manager.optimizer_ts="C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0"
zend_extension_ts="C:\Program Files\Zend\Optimizer\lib\ZendExtensionManager.dll"
zend_optimizer.optimization_level=15

在C盘根目录建立一个文件夹, c:/temp    将这个目录授予 everyone 所有权限(实际上只要有写入,修改,读取即可)
重新启动IIS
如果有加载eaccelerator的信息,说明安装成功。

至此,对于php的第一步优化完成。

TOP

基础设置及优化

第二节,基础设置及优化

一,Mysql的进一步设置及优化。
登录数据库
  “命令提示字符”窗口录入,
  录入cd C:\mysql\bin 并按下回车键,将目录切换为 cd C:\mysql\bin
  再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>

  修改密码
  C:\mysql\bin提示符下录入:
  格式:mysqladmin –u用户名 -p旧密码 password 新密码
  例如:给root加个密码ab12。键入以下命令:
  mysqladmin -uroot password ab12

  建立数据库
  格式:create database 库名;
  例如:建立新数据库discuz
  在MYSQL的提示符下:mysql> 录入 create database discuz;

  显示数据库
  格式:show databases;
  注意是databases而不是database

  建立新用户
  格式:grant all privileges on 数据库.* to 用户名@登录主机 identified by "密码";
  例如:增加一个用户test密码为1234,让他只可以在localhost上登录,并可以对数据库discuz进行所有的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),
  在MYSQL的提示符下:mysql> 录入grant all privileges on discuz.* to test@localhost identified by "1234";

  通过以上操作,你建立一个新的数据库 discuz,并增加了一个名为test对discuz数据库有所有操作权限。

  注意:以上仅仅是简单的Mysql操作命令,如果你需要了解更加详细的资料,请查阅Mysql相关操作说明文档。

首先,在上一节,我们安装的mysql,实际上没有设置root帐号的密码,这是极不安全的
下载 phpMyAdmin-2.7.0-pl1.zip 将子目录 phpMyAdmin-2.7.0-pl1 修改为 任意名称,复制到您的网站根目录
这个目录的名称最好复杂,不易被猜解,防止他人使用
然后修改config.default.php
找到

$cfg['PmaAbsoluteUri'] = '';

修改为

$cfg['PmaAbsoluteUri'] = 'http://test.muzone.cn/89xd983s';

即您的网站网址及phpmyadmin具体所在目录

找到

$cfg['blowfish_secret'] = '';

修改为

$cfg['blowfish_secret'] = 'muzone'

;
这个地方的值主要用作与加密您的cookie,可以任意设置

找到

$cfg['Servers'][$i]['auth_type'] = 'config';

修改为

$cfg['Servers'][$i]['auth_type'] = 'cookie';

此处为关键修改,设置完后,只有输入正确的帐号和密码才可以管理您的mysql

全部修改完毕,保存后,通过您的phpmyadmin 访问并管理您的mysql
第一次登陆,由于我们没有设置root的密码,所以帐号填 root 密码空,即可登陆
进入后第一件事情,就是修改root帐号的密码
登陆以后,点权限,修改root帐号,点最后的编辑按钮设置密码

密码设置成功后,需要重新登陆,至此,便可以对mysql进行各种管理,phpmyadmin的操作网上有很多教程
我这里就不详细讲了
至于 my.ini的设置,我们将在下一节详细讲解

二,安装 Eaccelerator 加速及缓存软件
安装 Eaccelerator 加速及缓存软件,可以加速php文件的读取和运行速度,并将一些mysql查询及php文件缓存起来减轻服务器的负担,从而达到对论坛的大幅度加速和负载能力的提高,这个软件我在许多大站上作过试验效果非常显著!其效果可询问若干长期由我维护的大论坛站长。

安装eaccelerator非常简单,
首先,下载eaccelerator.rar
解压缩后,一个是安装说明,一个是所需要的dll文件。
将eaccelerator_win_4.4.1.dll 复制到 c:/php/extensions/

打开c:/php/php.ini
找到

[Zend]
zend_extension_manager.optimizer_ts="C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0"
zend_extension_ts="C:\Program Files\Zend\Optimizer\lib\ZendExtensionManager.dll"
zend_optimizer.optimization_level=15

替换为

[Zend]
zend_extension_ts="C:\php\extensions\eaccelerator_win_4.4.1.dll"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="c:\temp"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
zend_extension_manager.optimizer_ts="C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0"
zend_extension_ts="C:\Program Files\Zend\Optimizer\lib\ZendExtensionManager.dll"
zend_optimizer.optimization_level=15

在C盘根目录建立一个文件夹, c:/temp 将这个目录授予 everyone 所有权限(实际上只要有写入,修改,读取即可)
重新启动IIS

在phpmyadmin中,察看php信息

如果有加载eaccelerator的信息,说明安装成功。

至此,对于php的第一步优化完成。

下面我们要修改php.ini的其它项

二,对php.ini进行最基本的设置和优化
对于php.ini的优化和设置,非常多样化,根据不同的程序需要和服务器配置,各人都有不同的方案,这里我不会说的太过详细,仅提供一些基本的。

大家可以阅读php.ini基本中文说明
首先,我们需要打开GD库的支持
第一节中,我们已经设置好了扩展库的目录,即extension_dir = "c:/php/extensions/"
下面我们只需要找到

;extension=php_gd2.dll

将前面的冒号去掉,即

extension=php_gd2.dll

然后保存php.ini,即可

然后,我们可以先做一项对于页面处理效果比较明显的设置


output_buffering = Off

  输出缓存允许你甚至在输出正文内容之后发送 header(标头,包括cookies)行 其代价是输出层减慢一点点速度。你可以使用输出缓存在运行时打开输出缓存, 或者在这里将指示设为 On 而使得所有文件的输出缓存打开。
  output_handler = ; 你可以重定向你的脚本的所有输出到一个函数,
  那样做可能对处理或以日志记录它有用。
  例如若你将这个output_handler 设为ob_gzhandler, 则输出会被透明地为支持gzip或deflate编码的浏览器压缩。
  设一个输出处理器自动地打开输出缓冲。

找到这个

output_buffering = Off

修改为

output_buffering = On

注意,不要设置数值,只需要设置为On即可。

相应的,你还可以在你的discuz后台,打开gzip支持,也是优化的一项内容。

有些朋友为了安全,还启用了php的安全模式,这个也是一办法,但是比较麻烦
大家可以到网上搜索一项相关的内容,我这里就不说了,毕竟对于效率没什么显著的意义。

另外有些朋友需要使用全局变量和MAGIC,这是一些php程序的必备条件,discuz2.0也需要
可以打开,不过安全性能将降低,方法很简单。
找到

register_globals = Off ;



magic_quotes_gpc = Off ;

将其修改为On即可

还有,一些朋友经常反映无法上传较大的文件或者后台备份数据经常超时,那么可以找到

max_execution_time = 30 ; 这个是每个脚本运行的最长时间,可以自己修改加长,单位秒
max_input_time = 60 ; 这是每个脚本可以消耗的时间,单位也是秒
memory_limit = 8M ; 这个是脚本运行最大消耗的内存,也可以自己加大
upload_max_filesize = 2M ; 上载文件的最大许可大小 ,自己改吧,一些图片论坛需要这个更大的值

关于效率,还有一个,就是,php.ini的zend配置,在php.ini中,底部有一行

zend_optimizer.optimization_level=15

如果您的机器配置足够好,可以优化这里


QUOTE:
这里最为重点的部分,仔细看!Zend Opt总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Opt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:

不使用 0 <= 如果这样不如不装,还能节约点内存说!
优化过程1(PASS1) 1
优化过程2(PASS2) 2
优化过程3(PASS3) 4
优化过程4(PASS4) 8
优化过程5(PASS5) 16
优化过程6(PASS6) 32
优化过程7(PASS7) 64
优化过程8(PASS8) 128
优化过程9(PASS9) 256
优化过程10(PASS10) 512

所以15只是开了前四个,如果您的内存足够多,也可以开更高,如设置为1023,即打开所有加速过程

12月21日补充,一些朋友反映,php经常报错,显示PHP has encountered an Access Violation at ****
很多人说,是php版本的问题,其实不然,可以从四个地方来看这个问题
1,是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限
2,是否使用的2003,设置过应用池,比如池中**了什么什么,调整一下再试试看,是否好了,呵呵
3,php.ini有两个地方没有设置,而且一些程序必须用到的

A

将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,例如:upload_tmp_dir = d:upload  当然,此时你的d:upload目录必须有读写权限。
这里我设置为
upload_tmp_dir = c:\temp (因为前面建立了这个文件夹,我图省事,呵呵)

B

出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
session_save_path = c:\temp
session.cookie_path = c:\temp
然后在c:\目录下建立一个temp目录,即可(前面我们的eaccelerarot正好用到,建立过这么一个文件夹)


还有一些关于邮件的设置,大家如果装了mail server 还有需要在win下使用邮件发送的,可能需要设置,大家根据我的中文说明自己调整。


进阶设置及优化


第三节中,暂时没有想到有什么可以给大家说得,只有大家比较关心的
mysql优化了

所以先说说这个,其实这个,很复杂,对于不同的网站,其在线,访问量,帖子数量,网络情况,以及机器配置
都有关系,优化不是一次可以完成的,需要不断的观察和调试,以取得最佳效果
下面我引用 Asiwish和老高的两篇优化措施,给大家看看

这些设置,只要通过修改 win2000的c:/winnt/my.ini 或者 win2003的 c:/windows/my.ini 来实现

首先,我们打开这个文件,先将最底部的密码项改成其它的,这个对数据库本身没影响,主要是防止一些有心人获取这个密码,对我们不利

然后大家看看两个例子,其中一些设置,略懂的英文的,即明白是什么意思,
不懂得可以去http://cb.kingsoft.com查单词,我懒得一个个对照写说明了
一个是 千人在线,1G内存的

QUOTE:
#This File was made using the WinMySQLAdmin 1.4 Tool
#2004-2-23 16:28:14

#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions

[mysqld]
basedir=D:/mysql
#bind-address=210.5.*.*
datadir=D:/mysql/data
#language=D:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
set-variable = max_connections=1500
skip-locking
#skip-networking
set-variable = key_buffer=384M
set-variable = max_allowed_packet=1M
set-variable = table_cache=512
set-variable = sort_buffer=2M
set-variable = record_buffer=2M
set-variable = thread_cache=8
# Try number of CPU's*2 for thread_concurrency
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=64M
#set-variable = connect_timeout=5
#set-variable = wait_timeout=5
server-id = 1
[isamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M

[myisamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[WinMySQLadmin]
Server=D:/mysql/bin/mysqld-nt.exe

这个方案,整体够用了,但是在pconnect和最大连接数上,需要研究
max_connections没必要那么大,我个人认为几百就够,否则给服务器加大了不少负担,经常会当机
连接超时的设置也要根据实际情况调整,大家可以**调整,然后观察效果如何。



下面是老高两年前的一些建议,大家参考一下


MYSQL 的优化(/etc/my.cnf)
1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;
2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数;
3)如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;
4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:

[mysqld]
set-variable = key_buffer=512M
set-variable = max_allowed_packet=4M
set-variable = table_cache=1024
set-variable = thread_cache=64
set-variable = join_buffer_size=32M
set-variable = sort_buffer=32M
set-variable = record_buffer=32M
set-variable = max_connections=512
set-variable = wait_timeout=120
set-variable = interactive_timeout=120
set-variable = max_connect_errors=30000
set-variable = long_query_time=1
set-variable = max_heap_table_size=256M
set-variable = tmp_table_size=128M
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=128M

你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)
Created_tmp_disk_tables
Created_tmp_tables
Created_tmp_files
Slow_queries

另外 mysql wait_timeout 那个值设置大了没用 做10左右就可了 (大C说得)

wait_timeout是使用长久连线时 空闲进程的控制 只要数据库在连接状态 他是不进行干预的 不管是否有查询或更新操作 把这个设置小一点 再使用pconnect就比较理想了

timeout的時間﹐我的經驗值是5-20﹐看你的SERVER的訪問量了~~ (梦飞说的)

访问量越大 这个值就应该越小 否则留出的空闲进程太多 会占用不必要的内存
在一个15分钟在线3000人的论坛上 设置为3比较合适 同时打开pconnect

另外,我再引用一篇文章

数据库连接过多的错误,可能的原因分析及解决办法

分析

系统不能连接数据库,关键要看两个数据:
1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。
2、数据库当前的连接线程数threads_connected。这是动态变化的。
查看max_connections、max_connections的办法见后。

如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。

因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。

但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。

这种情况通常发生在程序未能及时释放数据库连接资源或**原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。
该错误的简便的检查办法是,在刷新强坛页面时,不断监视threads_connected的变化。如果max_connections足够大,而threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。

从强坛出错的情况看,更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考

让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。

查看max_connections

进入MySQL,用命令:show variables
查看数据库最大可连接数的变量值:max_connections


查看threads_connected

进入MySQL,用命令:show status
查看当前活动的连接线程变量值:threads_connected


设置max_connections

设置办法是在my.cnf文件中,添加下面的最后红色的一行:

--------------------------------------------------------------------------------

[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=32000


--------------------------------------------------------------------------------

修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。

注意:
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
2、除max_connections外,上述**配置应该根据你们系统自身需要进行配置,不必拘泥;
3、添加了最大允许连接数,对系统消耗增加不大。
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。

可见,mysql的优化,是多样化,且根据环境不同,必须灵活调整的,大家不可生搬硬套,自己慢慢体会吧。

TOP