我们刚刚将网站移至新服务器,并继续看到此错误消息:
[Tue Nov 07 14:57:08.796821 2017] [:error] [pid 1777] :Apache2 IO write: (32) Broken pipe at /home/example/web/example.org/public_html/cgi-bin/links/admin/Booking/Calendar.pm line 228
第228行是:
print Links::SiteHTML::display('calendar_view_room', { month_loop => \@dates, owner_id_fk => $room_owner_useridfk, room_name => $room->{room_name_show}, target => $target, room_id => $room_id });
服务器设置为 nginx 前端,然后将Perl的代理传递给 Apache 2.4 。我们也在Apache端使用 mod_perl 。
有什么我可以看的,试图弄清楚为什么会出现这个错误?我在Google上唯一能找到的东西可以追溯到2009年,并没有那么大的帮助。
更新:要尝试解决造成此问题的IP(因此我可以看到它们是真品还是机器人),我已将Apache错误日志配置更新为:
ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
我认为新格式适合某些人:
[Wed Nov 08 08:54:41 2017] [错误] [pid 12574] util_script.c(591): [client 122.119.97.15:42982]来自脚本的格式错误的标题 'community.cgi':错误标题:
...但是对于与IO有关的错误,我没有得到客户的任何东西?
[Wed Nov 08 08:59:53 2017] [错误] [pid 12576] Apache2__Log.h(331): [客户端:Apache2 IO写道:(32)断管道 /home/example.org/public_html/cgi-bin/links/admin/Booking/Calendar.pm 第228行
答案 0 :(得分:3)
在发送所有输出之前客户端已经离开时会发生此错误。在早期版本的apache / mod_perl(apache 2.0?)上,它只是默默地失败了(我认为它是2.2上的连接中止错误)。
我从具有非常大输出的合法请求中看到这些,或者偶尔会看到移动用户,只要不足以表明某些更大的问题,就会忽略它们。
答案 1 :(得分:0)
自从迁移到apache2.4以来,我们也经常看到这些错误:
IO write: (32) Broken pipe
它们是由客户端错误地终止连接所触发的,这在以前的apache版本中被忽略,或在其他错误下报告。
我们(在2.4上)也看到类似的错误
Apache2 IO write: (104) Connection reset by peer
在apache2.2之前,我们看到此错误:
IO write: (103) Software caused connection abort
这些错误中的绝大多数(但不是全部)都是由漫游器触发的,并且它们使用的是HTTP 1.0协议而不是1.1协议,但是我敢肯定,真正的网络和客户端错误也会触发它们。