侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Wins2003系统中Apache性能优化方法

Windows  /  管理员 发布于 5年前   221

为了满足网站高负荷的要求,在调整Apache参数时发现进程经常占用内存过多导致当机。经过不断的优化和修改参数组合,终于让服务器稳定 下来,可以满足大量访问的考验和应用要求。笔者总结了调试过程中的问题和解决办法如下,以供有类似需求的网管员参考(系统环境为Windows Server 2003和apache2.2.8):

1、http-mpm.conf设置

Apache的线程数控制文件为http-mpm.conf,在conf/exrtra目录下面,要使该配置文件起作用需要在httpd.conf 中将 Include conf/extra/httpd-mpm.conf前#去掉,以使得http-mpm.conf生效。

在Windows系统中,起作用的是Winnt mpm段,

复制代码 代码如下:
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxRequestsPerChild 0
</IfModule>


以上是缺省的配置,一般情况下够用了,但负荷较大的网站就需要修改了,否则访问网站会变慢或没有响应。实际设置中可以根据apache-status查看apache实时连接状态,查看其中线程占用数目情况来进行相应的调整,我的服务器最后设置如下:

复制代码 代码如下:
<IfModule mpm_winnt_module>
ThreadsPerChild 350
ThreadLimit 350
MaxRequestsPerChild 10000
</IfModule>


其中ThreadLimit是占用系统线程数限制,修改后会在apache-status中直接看到效果,就是对应的最大的可用线程数(如图所示)。

MaxRequestsPerChild是进程的最大的请求数目,既指网站收到请求的缓存数。设置太小了会影响服务器性能,因为会占用较多cpu时 间,太大了则会占用内存资源。一般大型的网站文件个数都是成千上万,所以管理员应该根据网站情况自己设定,只要不为0(无限制)就可以,以防止内存溢出。

ThreadsPerChlid是Apache进程的子线程数,意思是服务器开了这么多的线程数来等待响应客户端请求。该参数需要根据 apache-status实时的监控情况来调节,太大会导致内存增长过快,直到服务器当机,太小会导致服务器连接队列在高峰期时占满,从而导致网站连接 慢。同时我们应该修改另一个配置文件httpd-default.php中的超时设置来配合这个参数。

2、httpd-default.conf设置

在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效。我们需要调节以下参数:

Timeout 15

该参数为连接超时,缺省的300秒显然太大,缩小该参数就会减少同时连接数,即用户实际占用的线程数,这样就可以起到配合上面ThreadsPerChlid参数的作用。

KeepAlive On

该参数为是否保持活连接,目前网站中一个页面一般会包含多个文件,所以相应用户访问时会有多个请求,因此开启可以提高服务器性能。

MaxKeepAliveRequests 50

该参数为最大的活连接请求数,可以根据网页实际包含的文件数目自行调节。

KeepAliveTimeout 5

该参数为活连接的超时时间,一般只要设置成小于Timeout即可。

这样设置后,Apache在响应请求和防止恶意攻击方面就取得较为平衡的效果,当然由于内存回收机制和进程管理不同,Windows下长期运行 Apache还是不如Unix稳定,因此我们可以让Apache在每天凌晨访问人数少时自动重启一次,以回收资源。用Windows自带的计划任务就可以 简单的实现。这样,我们就使Apache在Windows平台下像Unix一样长期稳定的提供服务了。

windows下apache及mysql定时自动重启&服务器定时自动重启

有时候觉得,服务器运行时间过长,造成服务器内存等压力过大。因此,不用重新启动服务器的情况下,完成apache和mysql的内存释放,是非常有益处的(把重启时间设置在访问量最低的)。
首先,apache的重新启动。

有两种apache自动定时重启的方法(两种,第二种可一同时启动apache和mysql,所以推荐一下第二种):

第一种、使用任务计划
开始>>程序>>附件>>管理工具>>任务计划
添加任务计划>>下一步>>apache restart>>选择时间(可以设置的为每天凌晨2-4点)>>一路确定即可。

第二种(个人觉得比较简单,同样也是任务计划) 采用at命令添加计划任务

1、在c:盘根目录新建一个apacheautostart.bat文件,然后右键编辑,将文件内容设为如下后保存:

复制代码 代码如下:
@ECHO OFF
net stop apache2
net start apache2
net stop mysql
net start mysql

(附加说明:上面的apache2与mysql为服务名称。)

2、"开始"-》运行"cmd"-》执行命令"at 04:00 c:apacheautostart.bat"
这样每天早晨4点系统就会自动重启apache与mysql
(附加说明:04:00为重启时间,c:autostartserver.bat为第一步的bat文件地址)

mysql的重新启动,也通过上面at命令方法重新启动了,所以推荐一下第二种方法。


同样,你也可一给自己的服务器加上一个定时自动重启的功能(比如每周重新启动服务器一次)。

可以用at命令和shutdown命令配合实现。

AT命令可以安排在特定日期和时间运行命令和程序,shutdown则可以在命令行下关闭并重启计算机,要在每周日的特定时间自动重启计算机,只需 在命令提示符下输入"at 02:00 /every:星期一 shutdown /l /r /y /c",这将在每周一的凌晨2点自动重启计算机。


  • 上一条:
    浅谈移动端网页图片预加载方案
    下一条:
    Win2003 IIS浏览ASP提示无法找到该页的解决办法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Windows 10的告别:2025年10月14日,一段时代的终结(0个评论)
    • windows 11激活_Win11 KMS激活流程步骤(1个评论)
    • 安装Windows 11系统的注意了,看看你的cpu是否在微软兼容列表排除中(1个评论)
    • 微软将于2022年9月20日推送Windows11 22H2新版本,推测2024发布windows 12(0个评论)
    • windows11系统中可以关闭禁止的服务及介绍(1个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-01
    • 2018-06
    • 2020-06
    • 2021-06
    • 2021-07
    • 2022-01
    • 2022-04
    • 2022-08
    • 2023-08
    • 2023-10
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客