本文将介绍Nginx作为代理服务器转发请求时,next upstream机制检测错误并重新转发给上游的执行流程。...注意,该时长的起始时间是从首次转发请求算起(而不是每次更换上游Server时重新计算),而截止时间则是最后1次检测next upstream是否允许使用的时刻: Syntax: proxy_next_upstream_timeout...对于符合REST规范的HTTP消息,响应码应当能够准确地描述应用层错误,比如,2xx错误码通常表示成功,4xx错误码表示请求参数有问题,而5xx错误码表示服务器出现故障。...基于RFC中对各错误码的定义,Nginx允许对以下7种可以进行重试的错误码启用next upstream功能: 响应码 字符串描述 含义 403 Forbidden 服务器理解请求的含义,但没有权限执行此请求...404 Not Found 服务器没有找到对应的资源 429 Too Many Requests 客户端发送请求的速率过快(Nginx版本 >= 1.11.13时提供)。
5XX 服务器错误,服务器在处理请求的过程中发生了错误 对于后端开发来说,我们通常见到的都是: 2XX状态码,比如200->请求成功, 5XX状态码,比如502->服务器异常,通常就是服务没正常运行,...虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂 字段 类型 说明 code int 返回码 message string 返回码说明 参考HTTP状态码的思路,我们对错误码进行分段...比方说 20000-29999表示订单创建失败: 20001,订单创建失败,存在进行中的订单 20002,订单创建失败,上一个订单正在排队创建中 这两种错误情况如果是给用户看,可能就只适合看到:很抱歉,...API提供者来提供个性化的Message能力会更好 我们可以把转译的消息配置到数据库,并缓存到Redis或者API本机 application_id code message 100001 20001 很抱歉...100001 20002 很抱歉,您有一个正在进行中的订单,请到我的订单列表中处理。 然后在请求处理结束即将返回的时候,根据application_id+code,去匹配替换message ?
,前端人员经常会询问下一步业务流程的接口定义在哪里,对接形式是什么样的 以上只是前后端人员通过接口交互的一小部分问题,这些问题就好比"牙痛",不致命,但是在整个软件开发的生命周期内,天天"牙痛”是很要命的...(404, "not found"), // 服务器错误 SERVER_ERROR(500,"server error"), BUSINESS_EXCEPTION(4000,...,这里着重参考一下Http定义的规范: 常见的HTTP状态码如: 200 - 请求成功; 301 - 资源(网页等)被永久转移到其它URL; 404 - 请求的资源(网页等)不存在; 500 - 内部服务器错误...message:错误信息 在发生错误时,如何友好的进行提示? 1.根据code 给予对应的错误码定位; 2.把错误描述记录到message中,便于接口调用者更详细的了解错误。...4 400-499 客户端错误 请求包含语法错误或无法完成请求 5 500-599 服务端错误 服务器在处理的时候发生错误 2.3统一结果类 /** * @Author:qxy * @Date:
它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。...,方便对存储内容进行监视 支持条件查询,筛选出满足条件的KEY或VALUE 数组、JSON等序列化字符反序列显示 兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外) 支持服务器连接池...用于配置了一组memcached服务器的情况下使用,服务器组中个memcached服务器的访问规则遵循upstream指令配置的轮询规则,同时可以使用该指令配置在发生那些异常情况时,将请求顺次加油下一个组内地而服务器处理...其中, status 未设置的memcached服务器返回状态,可以是多个 error 在建立连接,向memcached服务器发送请求或者读取响应头时服务器发生错误 timeout...在建立连接,向memcached服务器发送请求或者读取相应头时服务器发生连接超时 incalid_header, memcached 服务器返回的响应头为空或者无效 not_found
这种方法对于程序员来说处理也比较麻烦,对客户来说也不太友好,所以我们希望既能方便程序员编写代码,不用过多的自己去处理各种异常编写重复的代码又能提升用户的体验,这时候全局异常处理就显得很重要也很便捷了,是一种不错的选择...(401,"你能不能先登录一下"), NOT_FOUND(404, "未找到该资源!")..., INTERNAL_SERVER_ERROR(500, "服务器跑路了"), ; /** 错误码 */ private Integer errorCode; /** 错误信息...errorCode; } public String getErrorMsg() { return errorMsg; } } 说明:枚举类中定义了常见的错误码以及错误的提示信息...,错误的提示信息。
protocol听起来很高深很神秘,但是实际上protocol就是约定好的双方交互的消息格式。...memcached支持的命令 memcached支持三种命令,分别是存储命令,读取命令和其他命令。...“NOT_STORED\r\n” 表示数据因为某些错误未存储成功。这通常意味着不满足“add”或“replace”命令的条件。...noreply表示是否需要收到服务器的返回值。 服务器端的返回值有两种: “TOUCHED\r\n” 表示修改成功。 “NOT_FOUND\r\n” 表示要修改的对象不存在。...值存储失败 EXISTS cas中要存储的对象已存在 NOT_FOUND 要修改的对象不存在 ERROR 提交了未知的命令 CLIENT_ERROR errorstring 客户端输入有误,具体的错误信息存放在
在请求 API 时,有可能会因为客户端或者服务器端发生错误而导致请求失败,在这种情况下,一种标准的API错误会被返回,用来说明错误发生的具体原因。...返回的 API 错误的格式是一个数组,数组中的每个元素都代表一个具体的错误信息,每个错误信息都由 HTTP 响应状态码和具体的错误内容两部分构成,而具体的错误内容又包含两个字段:错误码和错误信息。...":[{"code":"NOT_FOUND", "message":"repository library/hello-world not found"}]}, 在返回的错误数组(errors[])中只包含一个元素...,在该元素中 “NOT_FOUND” 是错误码,“repository library/hello-world not found” 是错误信息。...4.查询关键字“q” 从 Harbor 2.0 开始,部分 API 引入了对查询关键字“q”的支持,提供了一种通用的方式来过滤查询结果。 目前查询关键字“q”支持5种查询语法。
虽然通过ECONNRESET错误码我们很容易查到这个错误意味着什么,但是通过源码和分析工具进行一次彻底的分析,会让你更加了解这个错误的产生和原理。更让人神清气爽。...这时候nodejs就在底层注册了一个可读事件,等到有数据或者发送出错的时候,会触发上层回调(虽然只注册了可读事件,但是如果有错误发生,epoll会返回POLLIN和POLLERR事件)。...上面是操作系统收到一个rst包时的操作。设置对应socket的错误信息为ECONNRESET,并设置状态为close。如果这时候用户执行read会怎样呢? ?...read函数会直接把错误信息返回给调用方。我们回到libuv中,当libuv调用read函数的时候,返回了错误码ECONNRESET。然后libuv执行nodejs的read_cb回调。...2 抓包分析 登录服务器,使用tcpdump工具,主要是过滤出想要的数据包。这里找出有问题的那几个ip。
自定义基础接口类 定义一个基础的接口类,自定义的错误描述枚举类需实现该接口。...代码如下: public interface BaseErrorInfoInterface { /** 错误码 */ String getCode(); /** 错误描述*/ String getMsg..., NOT_FOUND("404", "未找到该资源!"), INTERNAL_SERVER_ERROR("500", "服务器内部错误!")..., SERVER_BUSY("503","服务器正忙,请稍后再试!")...public String getCode() { return code; } public String getMsg() { return msg; }} 自定义异常类 定义一个异常类,用于处理我们发生的业务异常
protocol听起来很高深很神秘,但是实际上protocol就是约定好的双方交互的消息格式。...memcached支持的命令 memcached支持三种命令,分别是存储命令,读取命令和其他命令。...“NOT_STORED\r\n” 表示数据因为某些错误未存储成功。这通常意味着不满足“add”或“replace”命令的条件。...noreply表示是否需要收到服务器的返回值。 对应的服务器端返回值可能有两个: “DELETED\r\n” 表示删除成功 “NOT_FOUND\r\n” 表示要删除的对象并不存在。...noreply表示是否需要收到服务器的返回值。 服务器端的返回值有两种: “TOUCHED\r\n” 表示修改成功。 “NOT_FOUND\r\n” 表示要修改的对象不存在。
当用户选择URL入参时,偶有返回“图片下载错误”的错误码。严重时,可能在某一时间段大量返回该错误码,导致影响用户的现网业务。...业务错误码 说明 FailedOperation.ImageDownloadError 图片下载错误。 原因分析 根本原因 图片下载超时,超过下载时间允许的最大阈值4.5s。...客户使用姿势问题 从历史案例来看,导致图片下载超时主要是客户侧自身使用姿势的问题,具体包括: 1.用户的图片服务器某一时刻负载过高,导致公网请求该图片变慢。...不过从人脸识别产品发布至今,从未发生过下载代理服务不稳定导致大面积报错,一方面是因为人脸识别产品的服务保证稳定性、高可用性等,另一方面是人脸识别对现网各种报错情况有实时监控和告警,大盘的整体监控情况一直很稳定...2.若用户使用海外服务器存储图片,最好将海外图片迁移到国内服务器上;或者使用CDN服务,这样在进行海外图片下载时,会利用CDN在国内的节点进行请求,从而保证了请求速率。
1 package com.bie.enums; 2 3 public interface BaseErrorInfoInterface { 4 5 // 错误码 6 public...而使用枚举类的好处是处理异常的时候,可以通过枚举类直接获取到错误码、错误描述,方便调用。..., 11 12 NOT_FOUND("404", "未找到该资源!"), 13 14 INTERNAL_SERVER_ERROR("500", "服务器内部错误!")...; 17 18 // 错误码 19 private String resultCode; 20 21 // 错误描述 22 private String resultMsg...9 */ 10 private static final long serialVersionUID = -6329783845738305585L; 11 12 // 错误码
前言 实现一个http 服务器项目,服务器启动后监听80端口的tcp 连接,当用户通过任意一款浏览器(IE、火狐和腾讯浏览器等)访问我们的http服务器,http服务器会查找用户访问的html页面是否存在...---- HTTP协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议...sockaddr_in client; int client_socket; int len; char client_ip[64]; char buf[256]; pthread_t id;//存储线程...headers(int client_sock,FILE* resource); //发送html文件中的内容 void cat(int client_sock,FILE* resource); //服务器内部错误...同一时间点上,只能有一个线程执行。 每个线程都处于执行中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。
className – 接口名称method – 方法名称,time – 耗时,单位为mssuccess – 成功失败标识,00成功,01失败errorCode – 错误码,业务自定义,最好是整体的错误码格式错误类型...我一般会定义一个ErrorContext类,其中包含一个ArrayList用于存放异常对象,异常对象含错误码信息、错误描述信息、错误发生位置(appName)三个属性。.../*** 错误上下文*/public class ErrorContext extends ToString { /** * 错误栈,用于存储错误信息 */ private... * 添加信息时,从尾部添加,故位置越靠前,错误发生时间越早,或理解为最根本错误 * * @param error 公共错误对象 */ public void...而监控,是你发现异常的最佳方案,你不可能24小时盯着服务器的日志,你非常人,咱就不说了。
如果你暴露这样一个模型,那么最终将会成为CRUD(创建、读取、更新和删除)和资源。这并不一定是一件坏事,有时你所需要的所有内容便是一个纯粹的CRUD API。...使用动词传达目的,客户端想要做什么,它们期望从服务器得到哪些行为。 不要将错误码的选择限制为200和500。...使用完整范围的错误码,有160个错误码供你选择,所以几乎每一种类型的错误都有一个对应的错误码。使用正确的错误码是客户端能够合理处理错误的关键。...一个常见的问题是,尽管发生了一个错误但是服务器依然返回200,OK。在这种事情发生时假装所有事情运行良好显然不是一个很好的想法。 不要忽略缓存。...通常情况下,当资源发生变化的时候实际上它仅仅是展示发生了改变,而它依然是那个资源,应该使用同一个URL,因此避免将URL版本化。
int startup(u_short *); void unimplemented(int); 先简单地解释每个函数的作用: accept_request: 处理从套接字上监听到的一个...bad_request: 返回给客户端这是个错误请求,HTTP 状态吗 400 BAD REQUEST. cat: 读取服务器上某个文件写到 socket 套接字。 ...cannot_execute: 主要处理发生在执行 cgi 程序时出现的错误。 error_die: 把错误信息写到 perror 并退出。 ...not_found: 主要处理找不到请求的文件时的情况。 sever_file: 调用 cat 把服务器文件返回给浏览器。 ...(2)收到一个 HTTP 请求时(其实就是 listen 的端口 accpet 的时候),派生一个线程运行 accept_request 函数。
异常错误码说明 其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型,即只能是由I/O系统改变离散量输入和输入寄存器的数值,而上位机程序不能改变的数据类型,在数据读写上表现为只读,而内部比特或者物理线圈和内部寄存器或物理输出寄存器...错误代码表 代码 名称 含义 01 非法功能 对于服务器(或从站)来说,询问中接收到的功能码是不可允许的操作,可能是因为功能码仅适用于新设备而被选单元中不可实现同时,还指出服务器(或从站)在错误状态中处理这种请求...04 从站设备故障 当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。...05 确认 与编程命令一起使用,服务器(或从站)已经接受请求,并且正在处理这个请求,但是需要长持续时间进行这些操作,返回这个响应防止在客户机(或主站)中发生超时错误,客户机(或主机)可以继续发送轮询程序完成报文来确认是否完成处理...08 存储奇偶性差错 与功能码20和21以及参考类型6一起使用,指示扩展文件区不能通过一致性校验。服务器(或从站)设备读取记录文件,但在存储器中发现一个奇偶校验错误。
一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。事件集合用32位无符号整型变量来表示,每一位代表一个事件。...1.3 事件读取模式 在读事件时,可以选择读取模式。读取模式如下: 所有事件(LOS_WAITMODE_AND):读取掩码中所有事件类型,只有读取的所有事件类型都发生了,才能读取成功。...3.4 Event 错误码 序号 定义 实际值 描述 参考解决方案 1 LOS_ERRNO_EVENT_SETBIT_INVALID 0x02001c00 事件ID的第25个bit不能设置为1,因为该位已经作为错误码使用...任务锁住,不能读取事件 解锁任务,再读取事件 7 LOS_ERRNO_EVENT_PTR_NULL 0x02001c06 传入的参数为空指针 传入非空入参 错误码定义:错误码是一个32位的存储单元,...31~24位表示错误等级, 23~16位表示错误码标志, 15~8位代表错误码所属模块, 7~0位表示错误码序号,如下 #define LOS_ERRNO_OS_ERROR(MID, ERRNO) \
一.前言 nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的请求不再经过应用程序处理,如php-fpm、django,大大的提升动态页面的速度。...nginx只负责从memcached服务器中读取数据,要往memcached写入数据还得需要后台的应用程序来完成,主动的将要缓存的页面缓存到memcached中,可以通过404重定向到后端去处理的。..., location 读取从memcached服务器接收到响应的缓冲大小。...服务器读取响应超时时间。...再次访问:(直接从memcached读取) ? 哈,这个实例并不好。 1.
前言 本文教程示例代码见码云仓库:https://gitee.com/bingqilinpeishenme/boot-demo 异常处理在Java中是一种很常规的操作,在代码中我们常用的方法是try catch...但是,如果Controller发生异常了怎么办?业务层的异常可以在Controller捕获,Controller抛出的异常怎么捕获?SpringMvc的异常怎么捕获?...这个时候常见的操作有两种: 跳转错误页面,例如:找不到路径的时候跳转404,代码报错的时候跳转500等 响应统一的报错信息,使用Result对象(自定义的实体类)封装错误码,错误描述信息响应【分布式服务调用的时候推荐使用...com.lu.bootexception.exception; public class ErrorReturnResultException extends RuntimeException { /** * 错误码...com.lu.bootexception.exception; public class ErrorReturnPageException extends RuntimeException { /** * 错误码
领取专属 10元无门槛券
手把手带您无忧上云