- 问题描述:
- [error] 29605#0: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 125.118.102.87, server: www.amai1.com, request: "GET /account/signin HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "www.amai1.com"
- 日志文件生成的错误信息有一定的时间延迟
- 报错信息:
- 请求日志(同一时间点有多个请求)
- 解决方法:
- 根据报错信息查看网上的大部分的原因是:nginx proxy的超时时间太短等nginx配置的优化等,但是修改了之后,依然报同样的错误
- 根据请求日志的信息:
- 上述可以看到在同一个时间点出现了两个请求,并且一个成功,一个失败,并且访问日志有很多499响应码的请求。而499响应码是说/* 499, client has closed connection */.就是说客户端主动关闭了连接,或者nginx两次提交post间隔过快也会出现此问题。
1、客户端主动关闭连接,是因为过了设置的超时时长就会关闭连接。这个又回到了10s的超时时长和频繁的发生time out现象的问题上了。
2、提交POST请求过快,nginx会认为属于不安全的请求,便主动拒绝连接。这个有可能是客户端那边不间断的测试数据导致,对于这种情况,可以对nginx的配置文件进行配置以下参数来进行不主动关闭。proxy_ignore_client_abort on;(不安全的方式),但是问题依然未解决
- 上述可以看到在同一个时间点出现了两个请求,并且一个成功,一个失败,并且访问日志有很多499响应码的请求。而499响应码是说/* 499, client has closed connection */.就是说客户端主动关闭了连接,或者nginx两次提交post间隔过快也会出现此问题。
- 最后发现是redis服务器过期了,尴尬了一批,重新续期后,系统恢复了,搞定。
- 试了一下,数据库服务器连接失败,session服务器过期同样会报上面的错误,所以以后报这样的错,可以看一下是否是数据库,session,redis服务器是否过期
- 参考文档:http://blog.51cto.com/chenpipi/1682450