apache,mysql在windows下的运行效率很低,用php做增改查的操作,windows上比linux上慢10倍。虽然方法不是很科学,但也能说明一定问题。

解决方案 »

  1.   

    改用apache1.3 白版叶面明显减少,打开速度尚慢
    准备更新 2.2.8
    本地测试了一下,不知为何没有
    ThreadsPerChild 
    MaxRequestsPerChild 也没有这句
    # ThreadsPerChild: constant number of worker threads in the server process
    # MaxRequestsPerChild: maximum  number of requests a server process serves难道是全自动的?2.2.8更新介绍 有以下,哪位大师能人性化的转义一下 关于 winnt的那2条
    core: Fix regression in 2.2.7 in chunk filtering with massively chunked requests.winnt_mpm: Resolve modperl issues by redirecting console mode stdout to /Device/Nul as the server is starting up, mirroring unix MPM's.winnt_mpm: Restore Win32DisableAcceptEx On directive and Win9x platform by recreating the bucket allocator each time the trans pool is cleared.mod_dav: Fix evaluation of If-Match * and If-None-Match * conditionals
      

  2.   

     2.2.8 还是出现打不开白板,速度慢
    并且报错
    [warn]   (OS   64)指定的网络名不再可用。     :   winnt_accept:   Asynchronous   AcceptEx   failed. 
    用apache自带的server-statu查看一般都是 277 requests currently being processed, 723 idle workers 
    这个谈不上太多并发,apache无法响应吧?请教大家不换os,有没有处理方法
      

  3.   

    自己配置的(可做参考):WinXP SP2下Apache2+PHP5+MySQL5+phpMyAdmin+Zend最新配置资料总结
    下面是用到的配置软件,版本都是最新的:
    apache_2.2.4-win32-x86-no_ssl.msi
    php-5.2.1-Win32.zip
    mysql-5.2.3-falcon-alpha-win32.zip
    phpMyAdmin-2.10.0.2-all-languages.zip
    ZendOptimizer-3.2.6-Windows-i386.exe============================================
    还是从PHP开始~将php-5.2.1-Win32.zip解压到准备用于安装PHP的目录,这里我就解压到D:\www\php;找到php目录下php.ini-dist文件,改名为php.ini;用记事本打开php.ini,查找以下几行:
    ;extension=php_gd2.dll
    ;extension=php_mcrypt.dll
    ;extension=php_mysql.dll
    去掉前面的分号.这样做的目的是让php加载mcrypt和mysql等各种模块,在需要的时候可以随时配置;把D:\www\php\ext\下的php_mysql.dll和D:\www\php\下的libmysql.dll
    拷贝至c:\winnt\system32中其他的比如
    post_max_size = 8M
    upload_max_filesize = 2M
    都可以按实际情况进行设置.最后保存,也不需要复制任何文件到系统目录,这样PHP基本上就OK了!
    --------------------------------------------
    Apache1、安装双击打开apache_2.2.4-win32-x86-no_ssl.msi开始安装,一路NEXT(当然,选目录大家都会,我的是F:\www\Apache Group),同意许可协议后会有填写服务器信息的页面,因为是本地调试,network domain和servername两项都填localhost,最后那项administrator's email address填我自己的邮件地址,继续NEXT,直到FINISH;完成之后Apache会启动相关服务,并在任务栏右下角运行一个Apache监控器,可测试Apache是否安装成功:
    打开浏览器,输入http://localhost/,页面显示“It Works!”,表示Apache安装OK了~2、配置配置Apache2.2.4,打开D:\www\Apache2.2\conf目录下httpd.conf文件,添加下面几行:
    LoadFile D:/www/php/libmysql.dll
    LoadFile D:/www/php/libmcrypt.dll
    LoadFile D:/www/php/php5ts.dll
    LoadModule php5_module D:/www/php/php5apache2_2.dll
    PHPIniDir "D:/www/php/"
    AddType application/x-httpd-php .php
    这里前两行是加载mysql和mcrypt拓展;
    第三行是加载PHP5服务;
    LoadModule php5_module D:/www/php/php5apache2_2.dll是将PHP5作为模块进行加载,后面的是对应PHP5版本的dll路径,对于PHP5.2.1要用php5apache2_2.dll,而不再是php5apache2.dll(这个用于支持PHP5.14版);
    PHPIniDir这行很明显了哈,是定向PHP的配置文件php.ini的;
    AddType application/x-httpd-php .php 行是添加可以执行php的文件类型,比如可以再加上一行:
    AddType application/x-httpd-php .html  则html也可以执行php程序了;当然也可以按下面的格式将可执行PHP程序的相关的所有扩展名都加进去,比如:
    AddType application/x-httpd-php .php .html .htm .shtml找到
    DirectoryIndex index.html
    改成
    DirectoryIndex index.html index.php index.htm index.shtml
    这里和IIS里面设置访问优先级别差不多,一是定义默认页面及其类型,一是定义访问的页面类型顺序.找到 
    DocumentRoot "D:\www\Apache2.2\htdocs" 
    和 <Directory "D:\www\Apache2.2\htdocs">,修改成自定义的默认网页文件存放目录,比如我的是DocumentRoot "D:/www/root",
    对应的 <Directory "F:/www/root">
    这样,Apache基本上也配置好了~--------------------------------------------
    MySQL1、安装解压mysql-5.2.3-falcon-alpha-win32.zip得到一个setup.exe安装文件,运行之开始安装MySQL Server 5.2;
    第一步选择安装模式,选择Custom习惯安装,Next进入下一步;
    这一步选择安装内容:仍然MySQL Server完整安装,主要是自定义下面的安装目录,我安装在D:\www\MySQL5.2\ 点击Next进入下一步;
    Install开始安装,稍候会提示注册MySQL.com帐户,SKIP即可;
    完成安装,勾选Configure the MySQL Server now,Finish并进入MySQL配置;2、配置完成安装时若勾选了Configure the MySQL Server now,点击Finish便可直接进入MySQL Server Instance Configuration Wizard;否则就需要在MySQL安装目录\bin\下找到并运行MySQLInstanceConfig.exe进入设置.点Next开始配置,第一步选择配置模式,这里我已经安装了MySQL,所以选择第一种Detailed模式,Next进入下一步;
    这一步select a server type,不同的选择决定MySQL占用不同的系统内存和CPU资源,这里我选的是Developer Machine;
    继续Next,选择数据库用途,我选的是Multifunctional多功能型的;
    下一步设定InnoDB引擎的存储目录,我设置的是D:\www\MySQL5.2\InnoDB Datafiles\,点击Next进入下一步;
    设置MySQL数据库的并发连接数,这里需要了解什么是并发连接数,可根据实际情况进行设定.我这里选的是Manual Setting,并且设置连接数为10000;
    Next进入下一步,set the networking options,采用默认的,继续Next;
    设置默认语言,选择第三个,设定character为gbk;
    Next将MySQL设置为Windows系统服务,采用默认的,Next进入下一步;
    选择设置root帐户密码,或者可以同时新建一个匿名帐户Anonymous.值得注意的是设置root密码的下面有一个小选项,是否允许root用户从别的计算机登陆,为了方便可以勾选上,为了安全当然最好就别选;
    进入下一步Press Execute开始配置,完成 Finish 关闭设置向导`~
    OK!--------------------------------------------
    phpMyAdmin
    解压phpMyAdmin-2.10.0.2-all-languages.zip到PHP文件存放目录,比如我是解压到D:\www\root\phpMyAdmin2.10.0.2\的;打开D:\www\root\phpMyAdmin2.10.0.2\libraries目录下config.default.php文件进行相关配置:
    比如我找到 $cfg['PmaAbsoluteUri'] 行,将它修改为我phpMyAdmin的网址或本地位置:
    $cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin2.10.0.2/';设置Host比如我的为本地localhost,也可以为服务器IP地址:
    $cfg['Servers'][$i]['host']          = 'localhost';  设置
    $cfg['Servers'][$i]['auth_type']     = 'cookie'; 
    这个通常本地调试用config,当然如果在网络中也可以用cookie,我设置的就为cookie;$cfg['Servers'][$i]['user']          = 'root';     
    $cfg['Servers'][$i]['password']      = '';
    这两行设置登陆数据库的用户名和密码;再就是设置默认语言为:
    $cfg['DefaultLang'] = 'zh';下面``重要的,把下面的几行添加到Apache的配置文件httpd.conf中,使得Apache服务器可以加载
    #phpMyAdmin:
    php_admin_flag engine on 
    php_admin_flag safe_mode off 
    Alias /phpMyAdmin "D:/www/root/phpMyAdmin-2.10.0.2" 
    <Directory "D:/www/root/phpMyAdmin-2.10.0.2"> 
    DirectoryIndex index.php 
    Options Indexes MultiViews 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
    php_admin_flag engine on 
    php_admin_flag safe_mode off 
    php_admin_value open_basedir none 
    php_admin_value open_basedir "D:/www/root/phpMyAdmin-2.10.0.2" 
    </Directory> 这样,phpMyAdmin也OK了!
    注释:
    访问http://localhost/phpMyAdmin-2.10.0.2/
    如果顺利就会出现phpMyAdmin管理界面了。^_^;如果不顺利的话,有可能会出现下面的错误提示:
    Warning: session_start() [function.session-start]: 
    open_basedir restriction in effect. File(C:\WINDOWS\TEMP\) is not within the allowed path(s): (E:/www/root/phpMyAdmin-2.10.0.2) in 
    D:\www\root\phpMyAdmin-2.10.0.2\libraries\session.inc.php on line 100Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]:
     Failed to initialize storage module: files (path: ) in 
    D:\www\root\phpMyAdmin-2.10.0.2\libraries\session.inc.php on line 100如果出现上面的错误提示时,应该在E:\www\php下找到php.ini文件,
    打开php.ini文件,然后找到;session.save_path = "/TEMP",去掉前面的分号“;”,
    并改为session.save_path = "D:\www\temp\"
    这个路径可以自己随便定义,它是用来保存session的--------------------------------------------最后,Zend运行ZendOptimizer-3.2.6-Windows-i386.exe,开始安装:Next,确认接受条款;
    继续Next,选择安装目录,这里我设置的是D:\www\ZendOptimizer3.2.6;
    Next进入下一步,选择webserver,我们选Apache 2.X;
    继续下一步,选择php.ini文件存放目录,我的是D:\www\php目录,选择好后继续Next;
    这一步选择Apache Server的安装目录,我的是D:\www\Apache2.2,继续Next;
    确认刚才几步所设置的目录信息是否正确,点Install开始安装,安装的过程中会提醒你关闭Apache Sever/IIS,关闭后点确认,继续安装,最后完成;
    Finish,OK!
    ============================================
      

  4.   

    感谢阿,当时用绿色装是为了省事,现在重新装了apache,php作为模块载入,如上所述。mysql还是用绿色装中,它已经做成服务了,暂时也和mysql没有关系那么,apache最终配置 是以下的,这样出现的白板比较少,
    但页面打开速度还慢,具体表现当访问域名时,底部的状态栏很快就反映,正在查找220.xx....,诸如此类,
    但是经常会这样 这个状态保持5秒左右,才可能正式进入页面,就是服务器有数据传回来,title标题头就出现了,然后整个页面显示是很快的
    的确,当并发多的时候,这个明显,如果并发少,一访问域名等,立即传回数据
    那么是不是web程序造成的,用静态页面和txt这种文件测试,也是一样
    那么是不是服务器资源,看任务管理器,2cpu基本上在50%之下,4G内存,空闲2.5G
    那么是不是apache并发,就像前面说的,用apache自带的server-statu查看 
    一般都是   277   requests   currently   being   processed,   723   idle   workers   
    那么这个是不是window2000本身的原因,在80端口没法处理那么多 tcp/ip,这个是否,可以怎样做个测试??
    还是 正如有些文章说的 ,apache2调用微软的WinSock2 API有问题??这就是不治之症?apache相关的配置#Timeout:接收和发送前超时秒数
    Timeout 300#KeepAlive:是否允许稳固的连接(每个连接有多个请求),
    #设为"Off"则停用。
    KeepAlive On#MaxKeepAliveRequests:在稳固连接期间允许的最大请求数,
    #设为0表示无限制接入。
    #我们推荐你将其设为一个较大的值,以便提高性能
    MaxKeepAliveRequests 500#KeepAliveTimeout:在同一个连接上从同一台客户上接收请求的秒数
    KeepAliveTimeout 60ThreadsPerChild 1000
    MaxRequestsPerChild  0
      

  5.   

    MaxRequestsPerChild 0即可...不需要回收..
    另外apache lighttpd这些东西最佳的归宿是*nix...
      

  6.   

    服务器拿回来,用ab做了下压力测试
    500并发 ,重复500次,2000下 apache日志 立即反复出现    (OS   64)指定的网络名不再可用。     :   winnt_accept:   Asynchronous   AcceptEx   failed.
    页面访问也出现了 连接不上的白板2003下,一切正常apahce用的是最新2.2.8 现在安装了2003,准备过两天放回去,如果还不行,就安装 linux
    为什么不直接安装linux,因为洋文不过关,怕麻烦……没想到这次,大年30还在折腾这个事,祝大家新年愉快,祝我一切顺利……
      

  7.   

    用lighttpd.....测试性能用http_load比ab更好...
    别指望apache在win下面有多强..不是那么回事~~~什么时候apache foundation有把winnt mpm改成iocp模型那就或许有的一拼....