遇到一个奇怪的FastCGI进程无法启动的故障,经过n多分析和尝试后,发现php-fpm.log文件大于2GB,删除该日志文件后FastCGI进程正常启动!
FastCGI进程无法启动的时候,日志中的记录只有rlimit与系统ulimit文件数不一致的报告,而该错误一般不会造成进程不启动的故障。将系统配置改到一致也未能解决。后来发现无论重启或再次启动FastCGI进程,日志文件php-fpm.log大小均无变化且修改日期不变化,而且文件大小刚好为2GB,关键是这个文件大小太奇怪,遂将日志文件临时改名,然后再次启动FastCGI进程,启动成功!聖騎天下之后将原日志文件换回,FastCGI再次无法启动,这样反复操作之后验证了日志文件的大小是导致FastCGI进程无法启动的直接原因!
问题分析:FastCGI调用的是fopen方式去读写日志文件,而fopen不支持2G以上文件,所以后续的工作不再继续进行,出错直接退出。而日志文件一般不会这么大,一般不会出现此情况,而本案例恰好因为文件数限制不一致,导致日志文件不断增长,达到了fopen的2GB文件读写限制,所以才会出现该故障。所以,要根除该故障,就要将日志中出现的错误和告警都消除,本案例中就是要将rlimit和系统的最大允许打开文件数ulimit设置到一致,使得日志文件大小不会异常增常就可以了.
FastCGI进程无法启动的时候,日志中的记录只有rlimit与系统ulimit文件数不一致的报告,而该错误一般不会造成进程不启动的故障。将系统配置改到一致也未能解决。后来发现无论重启或再次启动FastCGI进程,日志文件php-fpm.log大小均无变化且修改日期不变化,而且文件大小刚好为2GB,关键是这个文件大小太奇怪,遂将日志文件临时改名,然后再次启动FastCGI进程,启动成功!聖騎天下之后将原日志文件换回,FastCGI再次无法启动,这样反复操作之后验证了日志文件的大小是导致FastCGI进程无法启动的直接原因!
问题分析:FastCGI调用的是fopen方式去读写日志文件,而fopen不支持2G以上文件,所以后续的工作不再继续进行,出错直接退出。而日志文件一般不会这么大,一般不会出现此情况,而本案例恰好因为文件数限制不一致,导致日志文件不断增长,达到了fopen的2GB文件读写限制,所以才会出现该故障。所以,要根除该故障,就要将日志中出现的错误和告警都消除,本案例中就是要将rlimit和系统的最大允许打开文件数ulimit设置到一致,使得日志文件大小不会异常增常就可以了.
No comments:
Post a Comment