摘要:Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到, Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该是Windows的优点)相比,后者无疑在易操作 性上更胜一筹。但是为什么又有那么多的爱好者钟情于Linux呢,当然自由是
阅读全文
摘要:请求处理 函数ngx_http_process_line()处理的数据就是从客户端发送过来的http请求头中的Request_Line。分为三步 1.读取Request_line数据,2.解析Request_line 3.存储解析结果并设置相关值 第一步:读取Request_Line数据。通过函数n
阅读全文
摘要:epoll的最大好处在于他不会随着被监控描述符的数目的增长而导致效率极致下降。 select是遍历扫描来判断每个描述符是否有事件发生,当监控的描述付越多时,时间消耗就越多,并且由于系统的限制select最多可以监控1024个描述符。 epoll监控的描述符的数目很大,并且epoll对描述符的响应是触
阅读全文
摘要:事件管理机制中的负载均衡处理在配置Nginx执行时,工作进程会有很多,由于各个工作进程相互独立接受客户端请求,处理,响应,而会出现的有的工作进程要处理很多请求等待处理,而有的工作进程则处于空闲状态而出现的负载不均衡的情况。 还有一种是在多个服务器间的负载均衡。 事件管理机制中的负载均衡采用轮询的方法
阅读全文
摘要:1.整体框架 正常执行起来的Nginx有很多进程,有master_process和worker_process进程,master_process是监控进程即主线程,worker_process是工作进程。 Nginx是通过upstream和后端服务器进行通信,通过fastcgi与后端应用服务器进行通
阅读全文
摘要:作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2013.09.15 23:19 转载请注明来自"祁峰"的CSDN博客 1 引言 众所周知,操作系统使用伙伴系统管理内存,不仅会造成大量的内存碎片,同时
阅读全文
摘要:惊群:是指在多线程/多进程中,当有一个客户端发生链接请求时,多线程/多进程都被唤醒,然后只仅仅有一个进程/线程处理成功,其他进程/线程还是回到睡眠状态,这种现象就是惊群。 惊群是经常发生现在server端,父进程fork很多子进程,当有客户端有链接请求时,所有子进程都被唤醒,可是只有一个子进程处理请
阅读全文
摘要:一.select select采用的是集合的方式,最多只能访问1024个套接字。可读,可写,异常,三种访问,并且采用的是轮训的方式进行每次访问都需要从内核向用户空间拷贝 二.poll poll采用的是轮训的方式对给定大小的文件描述符进行轮询,并且有pollfd结构体,事件的返回时存储在结构体中的re
阅读全文
摘要:转载至:http://beikeit.com/post-495.html 简单译文: 这段linux官方资料主要介绍了外部碎片(external fragmentation)、内部碎片(internal fragmentation)的概念及相关情况,说明了linux文件系统在磁盘还有5%空闲空间的情
阅读全文
摘要:一.基于TCP套接字 1. 服务器主机崩溃 首先在不同的主机上运行客户端和服务器端,先启动服务器,在启动客户端。当连接建立后,从网络上断开服务器主机,这样同样模拟了客户发送数据时,服务器主机不可达的情况。 当客户端输入数据,由客户端TCP当做一个数据分节发出,接下来客户端就阻塞于recv调用等待接收
阅读全文
摘要:data.h server.c client.c 运行结果:
阅读全文
摘要:一·close(int sockfd) 当server和client建立连接,server调用close(),则server发送fin给client,server不在通过该套接字继续传送消息或者接收消息,此时client调用read,如果接收到fin则返回0,但是此时的client还是可以write
阅读全文
摘要:转载自: Anker select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己
阅读全文
摘要:epoll模型 int epoll_create(int maxevent) //创建一个epoll的句柄 然后maxevent表示监听的数目的大小int epoll_ctl(int epollfd,int op,int fd,struct epoll_event *event) //epoll的事
阅读全文
摘要:多路复用I/O模型poll() 模型 代码实现 poll()机制和select()机制是相似的,都是对多个描述符进行轮询的方式。 不同的是poll()没有描述符数目的限制。 是通过struct pollfd结构体,对每个描述符进行轮询的 struct pollfd fdarray { int fd;
阅读全文
摘要:多路复用I/O: socket编程之select(),poll(),epoll() 代码: client.c server.c 结果:
阅读全文
摘要:socket编程,通信 client端 socket() >connect() >recv() > close(); server端 socket() >bind() > listen() >accept() >send() >close(); 1> socket(int family,int ty
阅读全文
摘要:socket编程,通信 client端 socket() >connect() >recv() > close(); server端 socket() >bind() > listen() >accept() >send() >close(); 1> socket(int family,int ty
阅读全文
摘要:Linux下的几种并发服务器的设计模式 1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发。 2>循环服务器和并发服务器 1.循环服务器:一个server只能一次只能接收一个client,当当前cli
阅读全文
摘要:堆创建对象和栈创建对象的区别: 堆创建对象是不可覆盖的 栈创建的对象是不可覆盖的
阅读全文
摘要:来自:http://blog.csdn.net/shootyou/article/details/6622226 昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下: http://blog.csdn.net/shootyou/article/details/6615051 里
阅读全文