Wang Yapu Blog

谋定而后动,知止而有得

Nginx内存池管理

"内存池数据结构和操作"

Nginx的内存池管理 内存池工作原理 nginx以并发能力强,占用内存少著称,实现代码简洁精妙。 nginx内存池的基本思想是预先分配一大块内存作为内存池,小块内存申请和释放从内存池中分配,大块内存另外进行分配。分配的内存块地址会进行内存对齐,提高IO效率。 优点: 将大量小内存的申请聚集到一块,比malloc更快。 减少内存碎片,防止内存泄漏。...

Nginx的前端负载均衡

"竞争问题、worker负载均衡、惊群问题"

Nginx的前端负载均衡 进程模型 nginx进程模型图: nginx采用多进程的方式,nginx启动后一个master进程管理多个worker进程,一般worker进程个数会设置和cpu核数一样。 master进程接收外界信号,发送信号各个worker进程,并监控各个worker进程的运行状态。如果有worker进程异常挂起或者退出,maste...

理解Nginx连接池

"配置、连接池数据结构、工作原理"

Nginx连接池 配置 worker_processes 12; events { use epoll; worker_connections 2048000; } 在linux系统中,每一个进程能够打开的文件描述符fd是有限的。通过ulimit -n,可以得到一个进程所能够打开的fd的最大数,因为每个socket连接会占用掉一个fd,所以这也会限...

Nginx特性简介

"四层负载和七层负载区别、性能对比、业界使用等"

Nginx特性简介 四层负载和七层负载区别 四层负载:基于IP+端口的负载均衡 通过虚拟IP+端口接收请求,然后再分配到真实的服务器。通过三层的VIP和四层的端口号来判断哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。 七层负载:基于URL等应用层信息...

nginx的几个重要概念

"connection、request、keepalive等"

Nginx重要基础概念 connection 在core模块下有ngx_connection.h和Ngx_connection.c两个文件,从ngx_connection.h可以看到ngx_listening_s的数据结构: struct ngx_connection_s { /* 连接未使用时,data成员用于充当连接池中空闲连接链表中的next指针。当连接被使用时,...

docker和paas基础分享

"docker镜像、文件系统、paas架构设计"

Docker和PaaS的基础分享 docker基本应用 docker --help docker镜像与docker文件系统 镜像是docker的灵魂所在,也是软件交付的产品。 FROM ubuntu:14.04 ADD run.sh / VOLUME /data CMD ["./run.sh"] rootfs 容器启动时内部进程可见的文件系统视角。 uni...

Nginx基础——Rewrite规则

"nginx基础知识"

Rewrite规则学习记录 rewrite是nginx一个特别重要的指令,该指令可以使用正则表达式改写URI。可以指定一个或多个rewrite指令,按顺序匹配。 正则匹配规则 ~ 区分大小写匹配 ~* 不区分大小写匹配 !~ 和 !~* 区分大小写不匹配及不区分大小写不匹配 文件及目录匹配 -f和!-f 判断是否存在文件 -d和!-d 判断是否存在目录 -e和!-e 判断是否...

线上Redis-Docker集群出现物理机崩溃的一次问题记录

"redis、docker、devicemapper问题定位"

Redis-Docker集群的一次踩坑记录 项目背景 点评线上redis的docker集群用于生产线上有一段时间,也算是一个全新的尝 试,利用docker的优势实现高效的redis实例创建和调度。 问题描述 最近一段时间,有几台出现崩溃问题,机器load不断升高,有的高达5000多, 诸多线程处于D状态,很多请求以及linux命令出现卡死状态。 现象1:很多线程处于D状态 ...

Lxcfs & Load

"docker monitor with lxcfs"

lxcfs What is lxcfs FUSE filesystem for LXC, offering the following features: a cgroupfs compatible view for unprivileged containers a set of cgroup-aware files: cpuinfo me...

Go and Docker

"go语言和docker基本知识必备"

Go & Docker 分享大纲 Go Why Go 工程结构 快速入门 并发模型 Docker Namespace Cgroup Go Why Go? 互联网、云计算时代的C语言 Google出品,开源产品,业界先驱开创 跨平台支持 编译型语言,但语法趋于脚本化,非常简洁 全自动的垃圾回收机制 先进、...