Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx 499错误码

Nginx 499错误码

作者头像
星哥玩云
发布于 2022-06-30 09:56:25
发布于 2022-06-30 09:56:25
1.6K00
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

今天发现nginx有不少的499错误,大约占了将近0.5%,而且是在新上线了一个含upstream的业务之后。

grep一下nginx源码,定义在ngx_request_t.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
* HTTP does not define the code for the case when a client closed
* the connection while we are processing its request so we introduce
* own code to log such situation when a client has closed the connection
* before we even try to send the HTTP header to it
*/
#define NGX_HTTP_CLIENT_CLOSED_REQUEST 499

这下就很清楚了,这是nginx定义的一个状态码,用于表示这样的错误:服务器返回http头之前,客户端就提前关闭了http连接。

再grep下“NGX_HTTP_CLIENT_CLOSED_REQUEST”,发现目前这个状态值只在ngx_upstream中赋值。

upstream在以下几种情况下会返回499:

(1)upstream 在收到读写事件处理之前时,会检查连接是否可用:ngx_http_upstream_check_broken_connection,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    if (c->error) { //connecttion错误
     ……
        if (!u->cacheable) { //upstream的cacheable为false,这个值跟http_cache模块的设置有关。指示内容是否缓存。
            ngx_http_upstream_finalize_request(r, u, NGX_HTTP_CLIENT_CLOSED_REQUEST);
        }
}

如上代码,当连接错误时会返回499。

(2)server处理请求未结束,而client提前关闭了连接,此时也会返回499。

(3)在一个upstream出错,执行next_upstream时也会判断连接是否可用,不可用则返回499。

总之,这个错误的比例升高可能表明服务器upstream处理过慢,导致用户提前关闭连接。而正常情况下有一个小比例是正常的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
搞定大厂算法面试之leetcode精讲14.排序算法
归并排序:时间复杂度O(nlogn),分的时间复杂度O(logn),合并的过程的复杂度是O(n)
全栈潇晨
2021/12/01
3100
用javascript分类刷leetcode-排序算法(图文视频讲解)
归并排序:时间复杂度O(nlogn),分的时间复杂度O(logn),合并的过程的复杂度是O(n)
hellocoder2028
2023/01/02
5010
【算法专题】分治 - 快速排序
题目:给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这个问题。
YoungMLet
2024/03/01
1570
八大排序(二)堆排序,快速排序,归并排序,计数排序
堆排序其实就是利用堆的第二个特点:任一结点的值都是其子树所有结点的最大值或最小值。
小灵蛇
2024/06/06
1850
八大排序(二)堆排序,快速排序,归并排序,计数排序
干货 | 手撕十大经典排序算法
当然,学算法是件相对枯燥的事情,不过,当你懂得算法这种思路之后,你会发现,算法真的是一个很神奇的东西,而且,算法引出的思想非常重要!!所以,千羽也会不断的学习死磕算法系列文章,和大家一起学习,一起进步。这篇文章主要讲解十大经典排序算法。话不多说,冲冲冲!
千羽
2021/12/29
5470
干货 | 手撕十大经典排序算法
七种常用排序算法的java实现
一、交换方法(被调用来交换值) /** * 交换方法 * @param a * @param j * @param i */ private static void swap(int[] a, int j, int i) { // TODO Auto-generated method stub int temp = a[j]; a[j] = a[i]; a[i] = temp;
曼路
2018/10/18
3530
【初阶数据结构篇】归并排序和计数排序(总结篇)
gitee 前篇:【初阶数据结构篇】插入、希尔、选择、堆排序介绍 中篇:【初阶数据结构篇】冒泡排序和快速排序
半截诗
2024/10/09
1310
【初阶数据结构篇】归并排序和计数排序(总结篇)
Leetcode | 第4节:二分查找,归并排序
上一节我们说完了链表的一些高频题。那么这一节,我们会介绍一些二分查找和排序相关的题目。二分和排序本身不是很困难,但是还是有一些难题需要一些技巧才能解决(倒也不是完全毫无头绪的那种),所以这一篇文章,我们除了基本内容外,也会花一些时间介绍一下技巧性的内容。
学弱猹
2021/08/10
5770
Leetcode | 第4节:二分查找,归并排序
SmallSum-归并排序-小和问题(逆序对)
例如:数组[4,2,5,1,7,3,6] 第一个元素4比2大,不算小和,5比4和2都大,那就是4+2=6;1比4和2和5都小,不算小和;7比前面的都大,那就是上次小和6+4+2+5+1=18;然后3前面比2和1大,那就是18+2+1=21;最后6比4、2、5、1、3都大,结果就是21+4+2+5+1+3=36。那么最后的结果就是36。
sr
2018/08/20
5750
快速排序-归并排序-堆排序
数组取标pivot,将小的元素放在pivot左边,大元素在右侧,然后依次对右边的子数组继续快排,以达到整个序列有序
Java架构师必看
2021/05/14
3690
重学数据结构和算法(五)之归并排序、快速排序
冒泡排序、插入排序、选择排序这三种排序算法,它们的时间复杂度都是 O(n2),比较高,适合小规模数据的排序。归并排序和快速排序的时间复杂度为 O(nlogn) 。这两种排序算法适合大规模的数据排序
六月的雨
2021/09/26
1.4K0
重学数据结构和算法(五)之归并排序、快速排序
LeetCode通关:通过排序一次秒杀五道题,舒服!
大家好,我是拿输出博客督促自己刷题的老三,前面学习了十大排序:万字长文|十大基本排序,一次搞定!,接下来我们看看力扣上有没有什么能拿排序解决的题目吧!
三分恶
2021/09/10
9730
LeetCode通关:通过排序一次秒杀五道题,舒服!
十大经典排序算法:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、计数排序、基数排序、桶排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。
用户11375356
2024/11/22
11.7K0
十大经典排序算法:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、计数排序、基数排序、桶排序
【算法】归并排序及其应用
归并排序是典型的分治算法,把一个数组的排序,分为两个子序列的排序,然后将两个有序序列合并。以上就是整个算法的核心。整个过程如下图所示(图侵删):
MapleYe
2020/03/28
4890
八大排序的Java实现概述1. 插入排序—直接插入排序(Straight Insertion Sort)2. 插入排序—希尔排序(Shell`s Sort)4. 选择排序—堆排序(Heap Sort)
概述 排序有内部排序和外部排序 内部排序是数据记录在内存中进行排序 外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存 时间复杂度为最差情况下的复杂度 八大排序就是内部排
JavaEdge
2018/05/16
1.6K0
十大排序——最全最详细,一文让你彻底搞懂
(注:文章中的算法顺序是按照下面的图片中的分类进行,你可以不按照这个顺序。根据你的个人喜好、时间以及上面的侧重点分析,按照自己的需求学习即可。)
全栈程序员站长
2022/09/15
1.1K0
十大排序——最全最详细,一文让你彻底搞懂
剑指offer | 面试题38:数组中的逆序对
「归并排序」与「逆序对」是息息相关的。归并排序体现了 “分而治之” 的算法思想,具体为:
千羽
2022/02/23
1.1K0
剑指offer | 面试题38:数组中的逆序对
常见排序算法-冒泡排序、选择排序 、插入排序 、快速排序、 归并排序 、堆排序
👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: 算法 🌈 算法类型:排序算法 🌈 排序算法 冒泡排序 冒泡排序的优化 选择排序 插入排序 快速排序 归并排序 堆排序 冒泡排序 平均时间复杂度: o(n^2) 最好时间: o(n) 最坏时间: o(n^2) 空间复杂度: o(1) 是否稳定: 稳定 简单的冒泡排序 public int[] bubbleSort(int [] nums){
才疏学浅的木子
2022/11/20
1.1K0
常见排序算法-冒泡排序、选择排序 、插入排序 、快速排序、 归并排序 、堆排序
【优选算法篇】揭秘快速排序:分治算法如何突破性能瓶颈(上篇)
分治法是一种非常高效的算法设计策略,广泛应用于计算机科学的多个领域,尤其是在解决复杂问题时,它通过将大问题拆解成更小的子问题来降低问题的复杂度。快速排序(QuickSort)是分治法中的经典例子,能够在许多实际场景中提升性能。它的重要性体现在以下几个方面:
熬夜学编程的小王
2024/12/24
2010
【优选算法篇】揭秘快速排序:分治算法如何突破性能瓶颈(上篇)
js算法初窥02(排序算法02-归并、快速以及堆排序)
  上一篇,我们讲述了一些简单的排序算法,其实说到底,在前端的职业生涯中,不涉及node、不涉及后台的情况下,我目前还真的没想到有哪些地方可以用到这些数据结构和算法,但是我在前面的文章也说过了。或许你用不到,但是,真的,如果你想要在前端领域有一个不错的发展。数据结构和算法一定是你的必修课。它不仅仅让你在处理问题的时候可以有一个思维底蕴,更重要的是,在遇到一些奇葩产品的时候,你可以和他PK到底!嗯,到底!   哈哈,开个小玩笑。咱们还是聊点有营养的。上一篇的算法比较简单,主内容就是循环,次内容就是比较。但是,
zaking
2018/07/06
1.3K3
推荐阅读
相关推荐
搞定大厂算法面试之leetcode精讲14.排序算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验