关于apache2.2日志切割报错failed unexpectedly处理

文章描述了在Apache2.2中遇到日志切割失败的问题,表现为频繁报错'piped log program 'rotatelogs.exe' failed unexpectedly'。通过排除法确定问题并非日志路径、虚拟主机数量限制,而是文件描述符(文件句柄数)不足。解决方案包括禁用虚拟主机日志或增加系统文件句柄数限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:用户方打电话,说网站不能正常访问,尝试重启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对虚拟主机数有限制?没听过这个事啊,别的项目上配置五六十个子站的也没见有事啊,既然怀疑,那就先尝试下,五个左右的加入配置的虚拟主机,当虚拟主机数到达25个的时候,此错误又开始出现;

5)、这时候灵光一闪,突然意识到,走错方向了,不是虚拟主机的数量限制,应该是文件描述符不够了(windows上叫文件句柄数),然后尝试将所有子站的访问日志和错误日志配置都给注掉,然后将所有虚拟主机都给加回去,大概四十六七个的样子,然后重启apache,发现日志并没有持续增长,也没有再报这个错误。

因为刚好客户那边web服务器空间不是很重足了,沟通后决定也就暂时不再启用对应的子站的日志记录了,只保留主站的日志记录。事后回想才

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值