说道部署php环境,现在win系统下最方便的方式应该是就是利用xampp部署apache了。但是,国内用户应该都知道,xampp官网的下载渠道非常不友好。所以才有了国内大量软件网站在提供xampp各种版本的下载。出于无奈吧,在上次升级win后,用了较早版本的xampp,部署了apache 2.3.17。

本来也没啥问题,但是在前天,服务器在某个时间点突然CPU被沾满,然后无法访问。重启后恢复正常,查找log后发现在问题发生时间点有如下报错。

[Mon Mar 30 11:04:03.905588 2020] [ssl:error] [pid 1708:tid 1676] [client 52.80.254.107:56510] AH02042: rejecting client initiated renegotiation
[Mon Mar 30 11:04:04.413411 2020] [ssl:error] [pid 1708:tid 1632] [client 52.80.254.107:56504] AH02042: rejecting client initiated renegotiation
[Mon Mar 30 13:21:27.467767 2020] [mpm_winnt:error] [pid 1708:tid 3428] AH00326: Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

先说最后那个报错,这个很简单,就是线程满了,溢出了。apache对win系统的线程设置位于conf/extra/httpd-mpm.conf

以前的版本中,需要再httpd.conf中启用,现在默认应该是开启的。设置下面两个参数,每个子线程最大数写到1000,总共数写到10000

<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    0
</IfModule>

上面那两个就比较烦人了,目前我能查到的原因竟然是apache 2.4.37的bug

https://bz.apache.org/bugzilla/show_bug.cgi?id=63052

https://blog.qualys.com/ssllabs/2019/01/23/mod_ssl-bug-and-ssl-labs-renegotiation-test?_ga=2.230200031.259520135.1585749703-39262125.1585657218

没办法了,只能升级了。不过说实话,xampp的升级策略真的够呛,说白了根本就是没有升级。xampp甚至无法安装在已经有文件的文件夹里,于是能做的就是尽量备份所有资料和配置文件。这里说的所谓的尽量备份,其实意思反而正相反。只备份配置文件,别的文件能不用的完全别用。包括apache、mysql在内只要一点文件不对,就启动不了。最后再说一下mysql的简单备份方法,用cmd。

mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql
mysql -h localhost -u root -p mydb2 < e:\mysql\mydb2.sql

-p后面输密码不要加空格,导入时需要现在数据库里建立db才能往db里面导入。

 想说点什么吗?

 (拖动评论框右下角可扩展评论框面积;若评论发表后未显示请耐心等待审核)

弑神发表于2020.04.1st