放假以来,服务器Apache二次崩掉了,不能再拖了,找bug解决;
崩掉的具体情况是,服务器出现弹框显示:Apache中止工做;
顺手关掉这个可恶的小弹框,世界就清静了,服务器正常运行;php
查看错误日志\Apache\logs
,找到关键报错:html
[Mon Aug 14 10:47:19.644531 2017] [mpm_winnt:error] [pid 5776:tid 4144] AH00326: Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting
报错表示进程的线程数不够用,能够修改ThreadsPerChild
,即每一个子进程开启的并发线程数。apache
Apache针对不一样的操做系统提供了多个不一样的MPM模块,例如:mpm_beos
、mpm_event
、mpm_netware
、mpmt_os2
、mpm_prefork
、mpm_winnt
、mpm_worker
。
Windows操做系统上默认的MPM模块是mpm_winnt
,mpm_winnt
模块是专门针对Windows操做系统而优化设计的MPM模块。它只建立一个单独的子进程,并在这个子进程中轮流产生多个线程来处理请求。
在对Apache的MPM模块具有必定了解后,咱们就能够针对不一样的MPM模块来修改Apache的最大并发链接数配置了。ubuntu
修改MPM模块配置服务器
1 启用MPM模块配置文件并发
在Apace安装目录/conf/extra
目录中有一个名为httpd-mpm.conf
的配置文件。该文件主要用于进行MPM模块的相关配置。不过,在默认状况下,Apache的MPM模块配置文件并无启用。所以,咱们须要在httpd.conf
文件中启用该配置文件,以下所示:ide
# Server-pool management (MPM specific) Include conf/extra/httpd-mpm.conf (去掉该行前面的注释符号"#")
2 修改MPM模块配置文件中的相关配置优化
修改http-mpm.conf
文件网站
#因为mpm_winnt模块只会建立1个子进程,所以这里对单个子进程的参数设置就至关于对整个Apache的参数设置。 <IfModule mpm_winnt_module> ThreadsPerChild 521 #默认值是150,推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500 MaxRequestsPerChild 3000 #推荐设置:小=10000 中或大=20000~100000 </IfModule>
3 重启phpstudy,启动成功了,接下来几天是观察时间了;有错的话再更新文章!操作系统