自定义博客皮肤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 2620

原创 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 1291

原创 初探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 287

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

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

2020-04-07 12:25:35 1928

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

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

2020-04-07 12:23:17 1242

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

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 1898

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

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

2018-11-14 17:57:44 1504

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

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

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

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

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

2018-10-16 16:29:11 1015

原创 [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 11472 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 2036 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 734

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

目录1.消息队列简介2.beanstalkd基本知识2.1beanstalkd简介2.2beanstalkd命令3.beanstalkd源码分析3.1数据结构3.1.1基础结构体3.1.2 管道tube3.1.3任务job3.14套接字socket3.15服务器server3.1.6客户端链接conn3.2 服务器启动过程3.2.1 epol...

2018-09-26 18:48:13 686

原创 [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测试burst4.3测试node...

2018-09-26 18:01:07 2836

空空如也

空空如也

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

TA关注的人

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