高并发下,apache频繁重新启动
时间:2021-07-01 10:21:17
帮助过:7人阅读
高并发下,apache频繁重启
有几台服务器都是windows2008系统
我配置了一下每台服务器的apache的最大并发量即ThreadsPerChild 1000
这几天为了优化原来的程序,需要写一个多线程(php借助apache的多线程实现)的长时间运行的程序,线程数是50个。
发现这些长时间运行的程序最多执行1个小时就会统一停止,找了半天原因发现当程序停止时apache的错误日志里会有“child process exited with status 255 -- Restarting.”的信息,然后apache就自动重启了。
于是我就检查每台服务器上的apache的错误日志,发现越高并发量的服务器,apache的重启频率就越频繁,有台并发在200左右的服务器竟然每隔几分钟就重启一次。
后来我试着用一个线程执行那个长时间运行的程序,发现1天下来都没有问题,再换50个线程的1小时不到又停了。
哎,我已经凌乱了,对apache实在不够了解,apache配置就设置了个多端口和并发数,其他都是原配,是不是还有些重要的配置我忽略了?
网上找了一段时间,没有合适的解决办法,各位一起分析讨论下吧
“child process exited with status 255 -- Restarting.”apache重启的问题如何解决?
php长时间执行程序遇到apache自动重启时怎么自动恢复?
------解决思路----------------------你这样改改看看,httpd.conf文件, 我觉得一般瓶颈都在mysql上。 如果还不行, 果断换nginx,我前一段时间也是这样, 现在用nginx, 目前很愉快了。
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 1000
------解决思路----------------------child process exited with status 255 -- Restarting
子进程的退出状态255——重启
windows 中的 php 是不支持线程的
如果你是通过 fsockopen 模拟,那就是主动发起的 http 进程。对于 apache 而言,这与浏览器发起的并无区别
当并发的 http 请求超过了 Apache 预设的并发数时,只会产生排队现象,而不会造成崩溃
当然,并发数是要有内存做保证的。内存不足,崩溃就是自然的
另外,如果 http 响应程序长时间没有输出的话,Apache 就会将其挂起。这不是 Apache 的问题,而是相应程序的问题