摘要:epoll & select & poll只能处理IO相关的操作,epoll每一个操作必须注册到时间监控机制中,并且还需要进程或者线程进行管理。 多进程/多线程 和epoll相比较 epoll用在大量链接,少处理的项目中; 多线程/多进程用在少量链接,复杂的业务处理。 在QQ中,处理登陆是epoll
阅读全文
摘要:1 响应格式如(十六进制方式显示) 序列0(值01)为version,固定取1即可序列1(值06)为type,代表FCGI_STDOUT,表示应用的输出序列2 3(00 01)代表2字节的请求id,默认取1即可(准确说应该是和请求应用时发送的id一致,这里假设请求和响应的id都是1)序列4 5(01
阅读全文
摘要:Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到, Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该是Windows的优点)相比,后者无疑在易操作 性上更胜一筹。但是为什么又有那么多的爱好者钟情于Linux呢,当然自由是
阅读全文
摘要:1.整体框架 正常执行起来的Nginx有很多进程,有master_process和worker_process进程,master_process是监控进程即主线程,worker_process是工作进程。 Nginx是通过upstream和后端服务器进行通信,通过fastcgi与后端应用服务器进行通
阅读全文
摘要:一.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
阅读全文
摘要: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 里
阅读全文
摘要:误区一 1.文件句柄 文件描述符 每开一个链接,都要消耗一个文件套接字,当文件描述符用完,系统会返回can't open so many files 这时你需要明白操作系统对可以打开的最大文件数的限制。 1>进程限制 每个进程最多只可打开1024个文件描述符 2>全局限制 输入cat /proc/s
阅读全文
摘要:面试的时候被问到这个问题,当时答得一塌糊涂。。。 对于简单的客户机服务器模型,并不能应对大规模的密集模型网络,所以有了基于提高服务器本身应付大规模数据请求能力的问题,设计了专用于提供网络服务的基本透明负载均衡器的局域网机群。 局域网机群表示为一个处理能力大,稳定性高,可用性好的超级服务器。 并且单个
阅读全文
摘要:读者写者问题,是指一个写者很多读者,在写者在写文件的时候不允许有读者在读文件,同时有读者读文件时,不允许有写者去写文件。当第一个读者竞争资源和cpu成功后,后面的读者就可以直接读,而写者一直处于等待状态。 sem_init()是对变量初始化 sem_wait() 是对参数进行加1操作 sem_pos
阅读全文
摘要:Plain Old Data (POD)POD指的是这样一些数据类型:基本数据类型、指针、union、数组、构造函数是 trivial 的 struct 或者 class。 POD用来表明C++中与C相兼容的数据类型,可以按照C的方式来处理(运算、拷贝等)。非POD数据类型与C不兼容,只能按照C++...
阅读全文