一、epoll_create 创建一个epoll接口,size参数和select不同,不是fd+1? 需要注意的是:当创建好epoll后,它就会占用一个fd值,在linux /proc/id/fd/能看到这个fd的,所以使用完epoll后,必须close()关闭,否则可能导致耗尽fd。 二、epol ...
分类:
其他好文 时间:
2018-02-21 23:58:51
阅读次数:
320
同步、异步、堵塞和非堵塞差别 同步:发出一个功能调用时。在没有得到结果之前,该调用就不返回 异步:当一个异步过程调用发出后。调用者不能立马得到结果。实际处理这个调用的部件在完毕后。通过状态、通知和回调来通知调用者 堵塞:堵塞调用是指调用结果返回之前,当前线程会被挂起。函数仅仅有在得到结果之后才会返回 ...
分类:
其他好文 时间:
2018-02-13 10:33:41
阅读次数:
181
Reactor模式:反应器模式,是高性能网络服务器中最为常用的一种模式,libevent,muduo,libuv等网络库都是以 Reactor模式构建。Reactor模式由同步事件多路分解器和具体事件处理程序组成,同步事件多路分解器一般都是 由操作系统支持,如支持IO复用的select,epoll, ...
分类:
其他好文 时间:
2018-02-11 14:38:34
阅读次数:
137
第九章 I/O复用 I/O复用技术是重要的提高服务器工作效率和性能的手段,Linux下实现I/O复用的系统调用主要有select、poll和epoll。 首先我们来看一下select的函数原型和常用的宏: 首先来看select函数原型,nfds指定了被监听的文件描述符的总数,其值通常被设定为所有文件 ...
分类:
系统相关 时间:
2018-02-07 00:33:51
阅读次数:
274
epoll 系统调用 1. 内核事件表 epoll使用一系列函数来完成任务,把用户关心的文件描述符中的事件放到内核里的一个事件表中,因此不用像select、poll那样每次调用都要重复传入文件描述符集或事件表。epoll需要一个文件描述符来唯一标识该事件表,该文件描述符使用 函数创建: includ ...
分类:
其他好文 时间:
2018-02-03 15:58:09
阅读次数:
172
今天,完成一下epoll的封装。类图 首先,还是画下类图,初步设计一下。 具体函数,我们下面详解。epoll封装EpollBase类CEpollBase.h:classCEpollBase{public:CEpollBase(intmax_events);virtual~CEpollBase();boolCreate(intsiz
分类:
其他好文 时间:
2018-02-02 21:53:39
阅读次数:
155
简单的 http 性能测试工具 wrk.git 一个简单的 http benchmark 工具, 能做很多基本的 http 性能测试. wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue ...
分类:
Web程序 时间:
2018-02-01 20:36:14
阅读次数:
325
之前使用IPC编写过聊天程序,但是这样仅能在同一台计算机上进行聊天;要使得在不同的计算机(不同的IP+端口)上也能进行通信,就需要用到socket编程。前面说到,要处理多客户端的响应问题,需要I/O复用,即调用select或者epoll。通常我们使用epoll函数,以下例子也是。 接下来,我们需要封装一个地址类。为什么要封装这样一个类呢? &
分类:
其他好文 时间:
2018-01-29 17:41:03
阅读次数:
174
1 wrk介绍 wrk是一款现代化的HTTP性能测试工具,即使运行在单核CPU上也能产生显著的压力。它融合了一种多线程设计,并使用了一些可扩展事件通知机制,例如epoll and kqueue。 一个可选的LuaJIT脚本能产生HTTP请求,响应处理和自定义报告,更详细的脚本内容可以参考script ...
分类:
其他好文 时间:
2018-01-28 20:52:47
阅读次数:
300
原文:https://book.2cto.com/201304/19618.html 1.5 configure详解 可以看出,configure命令至关重要,下文将详细介绍如何使用configure命令,并分析configure到底是如何工作的,从中我们也可以看出Nginx的一些设计思想。 1.5... ...
分类:
其他好文 时间:
2018-01-25 18:19:23
阅读次数:
143