现象:用户方打电话,说网站不能正常访问,尝试重启apache后访问正常,但是随后几分钟又无法访问,需要不断重启才能维持官网访问,到现场查看后,发现错误日志error.log中记载了大量的虚拟主机日志切割不正常的报错,报错内容为:piped log program 'bin/rotatelogs.exe D:/Apache2.2/logs/access_****.cn_%y%m%d.log 86400 480' failed unexpectedly. ***为对应的子站域名,http-vhosts.conf中配置了大概近五十个子站(虚拟主机),而报错日志中***将所有的子站都给囊括其中了。
处理方式:
1)、以为日志无法切割,遂观察了下access.log和error.log以及对应的子站的日志,发现有对应日期的切割记录;
2)、停止apache,将logs下所有日志剪切到别的目录,重新启动apache,观察到access.log和error.log正常生成,访问网站,无法响应,且error.log再不断的增大,打开发现内容还是为以上报错;
3)、网上有说这种报错是因为rotatelogs.exe的路径为相对路径引起的,但是我这里确不是这个问题,因为之前确实能生成对应日期的日志;
4)、尝试将虚拟主机配置文件中只配置一个虚拟主机(也就是只配一个网站信息,将所有子站暂时屏蔽掉),尝试重启apache,发现报错消失,当时猛的一惊,以为apache对虚拟主机数有限制?没听过这个事啊,别的项目上配置五六十个子