Nginx特点:1,跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。2,配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置。3,非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)。4,事件驱动:通信机...
分类:
其他好文 时间:
2014-07-29 15:02:10
阅读次数:
173
高性能的网络服务器需要同时并发处理大量的客户端,而采用以前的那种对每个连接使用一个分开的线程或进程方法效率不高,因为处理大量客户端的时候,资源的使用及进程上下文的切换将会影响服务器的性能。一个可替代的方法是在一个单一的线程中使用非阻塞的I/O(non-blocking I/O)。 这篇文章主要介绍l...
分类:
其他好文 时间:
2014-07-24 22:45:13
阅读次数:
292
当某个进程调用epoll_create方法时,linux内核会创建一个eventpoll结构体,这个结构体中有两个成员与epoll的使用方式密切相关。struct eventpoll{ struct rb_root rbr;//红黑树的根结点,这棵树中存储着所有添加到epoll中的事件,也就是这个....
分类:
其他好文 时间:
2014-07-24 21:22:56
阅读次数:
171
前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实现与使用详解.....
分类:
系统相关 时间:
2014-07-22 22:46:13
阅读次数:
519
从socket中读取数据可以使用如下的代码: while( (n = read(socketfd, buf, BUFSIZE) ) >0) if( write(STDOUT_FILENO, buf, n) = n) { printf(“write error”); exit(1); }当代码中的so...
分类:
其他好文 时间:
2014-07-22 00:26:33
阅读次数:
267
见过很多人写c代码、用结构体将各种要素封装、如下转载一个使用epoll的例子:
//
// a simple echo server using epoll in linux
//
// 2009-11-05
// 2013-03-22:修改了几个问题,1是/n格式问题,2是去掉了原代码不小心加上的ET模式;...
分类:
编程语言 时间:
2014-07-21 13:48:46
阅读次数:
312
提契纸上得来终觉浅,绝知此事要躬行。 正文 前段时间写了一篇epoll的学习文章,但没有自己的心得总觉得比较肤浅,花了一些时间补充一个epoll的实例,并浅析一下过程中遇到的问题。 上epoll_server的例子,epoll的代码都在这里1#include2#include3#include4.....
分类:
其他好文 时间:
2014-07-16 15:12:07
阅读次数:
297
libevent接口的使用是简单容易的、关键还是一些其它技术需要深入了解、如epoll!
下面文章来自open经验库:
libevent是一个基于事件触发的网络库,memcached底层也是使用libevent库。
总体来说,libevent有下面一些特点和优势:
* 事件驱动,高性能;
* 轻量级,专注于网络;
* 跨平台,支持 Windows、Linux、Mac Os等;...
分类:
其他好文 时间:
2014-07-16 11:05:32
阅读次数:
184
ngx_event_core_module模块的ngx_event_process_init方法对事件模块做了一些初始化。其中包括将“请求连接”这样一个读事件对应的处理方法(handler)设置为ngx_event_accept函数,并将此事件添加到epoll模块中。当有新连接事件发生时,ngx_event_accept就会被调用。大致流程是这样:
worker进程在ngx_worker...
分类:
其他好文 时间:
2014-07-15 12:25:28
阅读次数:
299
linux服务器编程 用多线程来读取epoll模型下的客户端数据...
分类:
编程语言 时间:
2014-07-13 18:27:25
阅读次数:
271