epoll

Linux实战教学笔记27:Nginx详细讲解

有些话、适合烂在心里 提交于 2021-02-15 07:34:28
前言:nginx的特点 本节主要对Nginx Web服务软件进行介绍,涉及Nginx的基础,特性,配置部署,优化,以及企业中的日常运维管理和应用。作为HTTP服务软件的后起之秀,Nginx与它的老大哥Apache相比有很多改进之处,比如,在性能上,Nginx占用的系统资源更少,能支持更多的并发连接(特别是静态小文件场景下),达到更高的访问效率;在功能上,Nginx不但是一个优秀的Web服务软件,还可以作为反向代理负载均衡及缓存服务使用;在安装配置上,Nginx更为方便,简单,灵活,可以说,Nginx是一个极具发展潜力的Web服务软件。 Nginx是什么? nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。 nginx因具有高并发(特别是静态资源),占用系统资源少等特性,且功能丰富而逐渐流行起来。 nginx不但是一个优秀Web服务软件,还具有反向代理负载均衡功能和缓存服务功能,与lvs负载均衡及Haproxy等专业代理软件相比,Nginx部署起来更为简单,方便;在缓存功能方面,它又类似于Squid等专业的缓存服务软件。 Nginx的重要面试知识 Nginx的重要特性 支持高并发:能支持几万并发连接(特别是静态小文件业务环境) 资源消耗少:在3万并发连接下,开启10哥Nginx线程消耗的内存不到200MB 可以做HTTP反向代理及加速缓存,即负载均衡功能

Nginx 配置文件详解

筅森魡賤 提交于 2021-02-14 16:15:00
注:感谢猎手家园前辈分享的资料,至此表示感谢。 # #####Nginx配置文件nginx.conf中文详解##### # 定义Nginx运行的用户和用户组 user www www; # nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8 ; # 全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/ error.log info; # 进程pid文件 pid /usr/local/nginx/logs/ nginx.pid; # 指定进程可以打开的最大描述符:数目 # 工作模式与连接数上限 # 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 # 现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 # 这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 worker_rlimit

Nginx配置文件详解

僤鯓⒐⒋嵵緔 提交于 2021-02-14 16:14:05
nginx配置解释官网:http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size 一、Nginx配置文件的整体结构 1.1、全局块 配置影响nginx全局的指令。主要包括: 配置运行Nginx服务器用户(组) worker process数 Nginx进程 PID存放路径 错误日志的存放路径 配置文件的引入 1.2、events块 配置影响nginx服务器或与用户的网络连接。主要包括: 设置网络连接的序列化 是否允许同时接收多个网络连接 事件驱动模型的选择 最大连接数的配置 1.3、http块 可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。主要包括: 定义MIMI-Type 自定义服务日志 允许sendfile方式传输文件 连接超时时间 单连接请求数上限 1.4、server块 配置虚拟主机的相关参数,一个http中可以有多个server。主要包括: 配置网络监听 基于名称的虚拟主机配置 基于IP的虚拟主机配置 1.5、location块 配置请求的路由,以及各种页面的处理情况。主要包括: location配置 请求根目录配置 更改 location的URI 网站默认首页配置 1.6、配置清单例析 二、配置文件详解 2.1 配置文件1 #######

Nginx详解

梦想的初衷 提交于 2021-02-14 08:37:13
Nginx详解 一、Nginx介绍 nginx:开源的,高性能的。高并发的www服务器和代理服务    对静态资源处理能力强,占用资源极少,    高并发状态下容易造成崩溃 同类型web服务:apache、tomacat、resin、weblogic 反向代理:lvs、haproxy 前端缓存:squid、vanish 二、Nginx重要特性 ①支持高并发    ②资源消耗少 三、Nginx三大功能 ①web服务  ②前端缓存  ③反向代理 Nginx使用的是epoll模型 Apache使用的是select模型(初始模型,性能差) Apache在处理动态资源的时候比Nginx强 什么是epoll:异步I/O网络非阻塞模型 什么是select:同步I/O网络阻塞模型 四、Nginx安装 安装Nginx的支持包:pcre-devel openssl-devel 解压nginx包到/usr/local 进入nginx解压后的包进行编译: ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install 做软连接或环境变量==>echo "PATH=$PATH:/usr/local

nginx配置详解

拜拜、爱过 提交于 2021-02-11 15:58:46
nginx的配置在nginx下的conf/nginx.conf worker_processes 1; 进程为1,可以往高调,一般设置为 CPU数*核数 #error_log logs/error.log; 错误日志存放的位置 #pid logs/nginx.pid; pid文件存放的位置 events {   use epoll; 使用epoll的I/O 模型。nginx一般都用epoll worker_connections 1024; 这是一个子进程的连接数,可以调高 keepalive_timeout 60; 高可用的超时时间 } http {   include  mime.type:  //设定mime类型,类型由mime.type文件定义   default_type application/octet-stream;   #access_log logs/access.log main; 访问日志的开启和路径   sendfile  on;   keepalived_timeout  65;   #gzip  on;  是否开启gzip压缩   server  {     lsten  80;  监控的端口     server_name   www.yunwei.com; 域名   location / {  我的个人理解为这也是个location匹配规则    

On epoll_pwait, POSIX timers and X11 events. Most of X11 events is either delayed or dropped

十年热恋 提交于 2021-02-11 12:39:20
问题 The setup is below. have a X11 connection file descriptor x11_fd set in non-blocking mode. have a signal file descriptor sig_fd set in non-blocking mode. create a POSIX timer with timer_create add all above in epoll set main_loop: n = epoll_pwait(ep_fd, ep_evs, MAXEVENTS, -1, &mask_sigs) if(fd == sig_fd) do set some signal flags if(fd == x11_fd) do X11 events if(fd == timer_fd or timeout) do some small computations end_main_loop X11 events are processed with while((event = xcb_poll_for_event(

单线程Redis性能为何如此之高?

人盡茶涼 提交于 2021-02-11 01:34:21
文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。 实际项目开发中现在无法逃避的一个问题就是缓存问题,而缓存问题也是面试必问知识点之一,如果面试官好一点可能会简单的问你二八定律或者热数据和冷数据,但是如果问的深入一点可能就会问到缓存更新、降级、预热、雪崩、穿透等问题,而这些问题可能会拦下大部分平时不怎么关注缓存的朋友,这些问题实际上都和缓存服务器息息相关,我们日常中经常使用的缓存服务器一般有两种:Redis和Memcached。本篇开始正式进入Redis系列文章,本篇主要讲讲Redis使用单线程为何速度还能如此之快? 既然谈到缓存服务器有两种,那我们为何要选择Redis呢?Redis与Memcached两者之间有何区别呢? Redis 和 Memcached 的区别 Redis支持常见数据类型:Redis 不仅仅支持简单的 key/value 类型的数据,同时还提供string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)等数据结构的存储。而Memcache 只支持简单的数据类型 String。 Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而 Memecache 把数据全部存在内存之中。 集群模式:Memcached 没有原生的集群模式

《Redis开发与运维》读书笔记(一)

江枫思渺然 提交于 2021-02-08 19:00:00
全局命令 查看所有的键(遍历所有key,慢查询之一) keys * 键总数(redis内部维护的计数器,并不会扫描全库) dbsize 检查键是否存在 exists key 删除键 del key1 key2... 过期设置 expire key seconds 获取数据类型 type key 数据结构与内部编码 string: int embstr raw hash: hashtable ziplist list: quicklist set: hashtable intset zset: skiplist ziplist 单线程与I/O多路复用模型 客户端到服务端模型 发送命令 执行命令 进入命令队列 返回结果 为什么快 纯内存访问(主要) 非阻塞io:依赖linux内核中的多路复用IO接口 epoll ,自编写一套处理模型(不依赖于其他事件模型)将epoll中的连接、读写、关闭都转换为事件 单线程避免了线程切换以及线程竞争的开销,单线程也简化了数据结构与算法的实现,坏处是对于慢查询非常敏感,一个慢查询将阻塞之后所有的命令 数据结构的概览 字符串 命令 命令 时间复杂度 set key value O(1) get key O(1) del key [key ...] O(k) mset key value [key value ...] O(k) mget key [key

Redis底层数据结构

北战南征 提交于 2021-02-06 21:29:56
在上一篇中我们已经介绍过了Redis有5种数据类型,但每一种数据类型底层的实现都是不同的,在学习Redis时,我们除了要掌握这5种数据类型外,还要了解它们具体的底层实现,这有助于我们更好的掌握Redis的,在遇到问题时,可以方便快速的解决问题,在这篇,我们主要了解全局命令、数据结构及内部编码等方面的知识。 全局命令 Redis有5种数据结构,虽然它们底层不同,但还是有一些通用的命令是相同的。 查看所有键(返回所有的键,并它具体的键输出出来) keys * 查看键总数(返回当前数据库中的键的个数) dbsize 备注:dbsize命令在计算键总数时不会遍历所有的键,而是直接获Redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1)。而keys命令则会遍历所有键,所以它的时间复杂度是O(n),所以如果Redis中保存了大量的键时,keys命令要慎用。 检查键是否存在 exists key 我们看exists命令是有返回值的当键存在时则返回值为1,当然键不存时返回值则为0。 删除键 del key 我们知道在Redis中有5种数据结构,但del命令可以直接删除任意类型的数据结构,而不用担心它底层的实现。 我们看del命令和exists命令一样,都是有返回值的。只不过不同的是del命令返回的时成功删除键的个数。如果返回的是0,说明该键没有被成功删除,也就说明该键不存在

网络通信 --> IO多路复用之select、poll、epoll详解

妖精的绣舞 提交于 2021-02-02 05:00:39
IO多路复用之select、poll、epoll详解 目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll ,I/O多路复用就是 通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作 。 但select,pselect,poll,epoll本质上都是同步I/O ,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。 与多进程和多线程技术相比, I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程 ,也不必维护这些进程/线程,从而大大减小了系统的开销。 一、使用场景 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:   1)当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。   2)当一个客户同时处理多个套接口时,这种情况是可能的,但很少出现。   3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。   4)如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。   5)如果一个服务器要处理多个服务或多个协议,一般要使用I