自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Golang之HTTP server 502问题分析

问题引入   生产环境Golang服务有时会产生502报警,排查发现大多是以下三种原因造成的: http.Server配置了WriteTimeout,请求处理超时,Golang断开连接; http.Server配置了IdleTimeout,且网关和Golang之间使用长连接,,Golang断开连接; Golang服务出现了panic造成服务重启;   第三种case非常简单,本文将重点分析前两种case背后的深层原因。   注:请求链路为 客户端 ===> Nginx ===> Golang

2020-08-13 16:08:05 3082

原创 Redis『慢查询』分析

问题来源   高峰盯盘期间,通过kibana查询发现不定时存在一些redis慢查询日志(客户端日志);而且目前项目中记录redis慢查询日志的门限默为300ms。这种不知原因且不定时的慢查询是非常危险的。   注1:redis server实例配置的slow log门限为10ms,并且存在慢查询报警。   注2:客户端与redis之间还存在Twemproxy代理(以下简称tw)。   注2:客户端为Golang服务,与tw之间是长连接,基于连接池实现。 【案例1】客户端问题排查   2020.07.29 1

2020-08-11 19:22:24 1397

原创 初探Nginx HTTP处理流程

基本概念:   Nginx作为一款开源的、高性能的HTTP服务器和反向代理服务器而闻名,本文基于nginx-1.15.0,将为读者简要介绍其HTTP处理流程。   通常nginx配置文件如下所示: worker_processes 1; events { worker_connections 1024; } http{ access_log logs/access.log...

2020-04-07 12:29:32 405

原创 TCP SYN队列与Accept队列详解

  尽信书,不如无书。   纸上得来终觉浅,绝知此事要躬行。   实验现象依赖于系统(如下)以及内核参数(附录);一切以实验结果为准。 cat /proc/version Linux version 3.10.0-693.el7.x86_64 引子   线上服务(Golang)调用内网API服务(经由内网网关/Nginx转发)时,偶尔会出现"connection reset by peer"报警...

2020-04-07 12:25:35 2191

原创 记一次PHP偶现获取不到Redis数据排查过程

问题描述   3月25号早晨8点左右线上回归时,发现getTestInfos接口部分请求返回空数据。kibana查询异常请求日志,输入参数正常;梳理接口业务逻辑,是根据输入参数从Redis查询数据返回空导致。   进一步确认:1)Redis查询数据时未抛异常;2)Redis中确实存在该数据;3)只有偶尔部分请求无法从Redis获取数据。   10点25左右,重启业务进程与confd,恢复正常。  ...

2020-04-07 12:23:17 1376

原创 一些值得深思的二进制算法

1.统计整数二进制中比特1数目(redis bitcount命令): int countNumberbit1(int x) { x = (x & 0x55555555) + ((x >> 1) & 0x55555555); x = (x & 0x33333333) + ((x >&gt

2018-11-26 17:27:23 1997

原创 【nginx源码】nginx中的锁与原子操作

问题引入 多线程或者多进程程序访问同一个变量时,需要加锁才能实现变量的互斥访问,否则结果可能是无法预期的,即存在并发问题。解决并发问题通常有两种方案: 1)加锁:访问变量之前加锁,只有加锁成功才能访问变量,访问变量之后需要释放锁;这种通常称为悲观锁,即认为每次变量访问都会导致并发问题,因此每次访问变量之前都加锁。 2)原子操作:只要访问变量的操作是原子的,就不会导致并发问题。那表达式么i++是不是...

2018-11-14 17:57:44 1652

原创 【nginx源码】nginx哈希表详解

1.基本概念 哈希表是一种存储键值对(key-value)的数据结构,根据键查找值的时间复杂度为O(1)。我们经常见到的哈希表都是采用数组+链表实现(即所谓的拉链法)。 与普通哈希表不同,nginx哈希表有以下特点: 创建nginx哈希表时,所有的key-value键值对已经确定,哈希表创建完成后不允许再添加或者删除键值对 nginx哈希表并没有采用拉链法,而是开放地址法; nginx哈希表支持...

2018-11-14 17:56:30 2039 1

原创 【redis源码】删除大key导致redis主从切换

1. 问题简述 前几天接收到报警,同时Redis团队监控到redis集群发生了主从切换; 最终分析原因是,删除大key,导致redis主服务器阻塞,sentinel哨兵认为主服务器宕机,进行了故障转移;如下图所示: 在Redis集群中,应用程序尽量避免使用大键;直接影响容易导致集群的容量和请求出现”倾斜问题“,同时在删除大键或者打键过期时,容易出现故障切换和应用程序雪崩的故障; 查询线...

2018-10-16 16:29:11 1145

原创 [nginx源码]FastCGI模块详解

目录 1.初识FastCGI协议 1.1消息头 1.2消息体举例 2. 基础知识 2.1 FastCGI配置 2.2FastCGI配置预处理 3.构造FastCGI请求 3.1FastCGI请求结构 3.2 计算请求第一部分长度 3.3填充请求第一部分 3.4填充请求第二三部分 4. 实战 4.1配置 4.2FastCGI请求包 总结 1.初识FastCGI协议 ...

2018-09-28 16:58:51 12051 1

原创 [php]php内存管理

目录 第一章 从操作系统内存管理说起 1. 分段管理 2.分页管理 3.linux虚拟内存 第二章 说说内存分配器 1.内存分配器设计思路 第三章 内存池 第四章 切入主题——PHP内存管理 1.PHP内存管理器数据模型 2.PHP small内存分配方案 3.large内存分配: 4.huge内存分配: 5.内存释放 6.zend_mm_heap和zend_mm_ch...

2018-09-26 19:12:08 2481 1

原创 [php]如何理解php虚拟机

目录 1.从物理机说起 1.1冯诺依曼体系结构 1.2汇编语言简介 1.3 函数调用栈 2.PHP虚拟机 2.1指令 2.2 数据存储 2.3 再谈指令 2.4 函数栈帧 总结 1.从物理机说起 虚拟机也是计算机,设计思想和物理机有很多相似之处; 1.1冯诺依曼体系结构 冯·诺依曼是当之无愧的数字计算机之父,当前计算机都采用的是冯诺依曼体系结构;设计思想主要包含以下几个...

2018-09-26 18:56:59 817

原创 [消息队列]beanstalkd源码详解

目录 1.消息队列简介 2.beanstalkd基本知识 2.1beanstalkd简介 2.2beanstalkd命令 3.beanstalkd源码分析 3.1数据结构 3.1.1基础结构体 3.1.2 管道tube 3.1.3任务job 3.14套接字socket 3.15服务器server 3.1.6客户端链接conn 3.2 服务器启动过程 3.2.1 epol...

2018-09-26 18:48:13 846

原创 [nginx源码]nginx限流模块详解

目录 1.限流算法 1.1计数器 1.2 漏桶算法 1.3 令牌桶算法 2.nginx基础知识 2.1HTTP请求处理过程 2.2 nginx事件处理简单介绍 3. ngx_http_limit_req_module模块解析 3.1配置指令 3.2源码解析 3.2.1数据结构 3.2.2限流算法 4.实战 4.1测试普通限流 4.2测试burst 4.3测试node...

2018-09-26 18:01:07 3371

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除