我们最近有来自 nginx 本身的大约 500 个不知何故没有记录(我们有屏幕截图,但日志中没有任何内容)。这本身就很奇怪,因为通常会出现错误。无论如何,我想知道是否有类似连接池大小的东西,如果达到最大值会导致 500?我们已经将其与最近的流量激增相关联,但这并不是决定性的。
任何人对如何开始处理这样的问题有任何想法吗?
我们在 nginx 和 lmon 中使用日志格式的组合来捕捉这样的事情。NGINX 日志格式,如:
log_format main '$status:$request_time:$upstream_response_time:$pipe:$body_bytes_sent $connection $remote_addr $host $remote_user [$time_local] "$request" "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $upstream_cache_statr $upstream在:$http_cookie"'
将捕获许多有用的诊断信息,例如处理请求的上游服务器,并将状态放在前面,以便即使日志滚动得非常快也易于阅读。
我们使用 LMON 来查看这些日志,然后在日志中发现错误(如 500s、503s、400s)时向我们发出警报(寻呼机/电子邮件):
http://www.bsdconsulting.no/tools/lmon-README
这可以帮助您在问题发生时收到警报,这是调试它的最简单时间。
如果您还没有,您可能应该考虑的另一件事是默认情况下 nginx 将 500 视为致命条件,并且不会尝试另一个上游。如果您有多个上游,您可以将其配置为使用另一个,如果它得到 500,希望能掩盖用户的失败:
http://wiki.nginx.org/NginxHttpProxyModule#proxy_next_upstream
归档时间: |
|
查看次数: |
21174 次 |
最近记录: |