由于是跳着看的,后面看到有提到啥epoll模型,那就补充下前面的知识。web
cat /proc/loadavg
查看运行队列的状况。定义:CPU空闲而且等待I/O操做完成的时间比例。数组
进程有两个运行模式:用户态和内核态,进程一般运行在用户态,这时候可使用CPU和内存来完成一些任务,而当进程须要对硬件外设进行操做的时候(读磁盘文件、发送网络数据),就必须切换到内核态。浏览器
减小没必要需要的系统调用,优化Web服务器性能。缓存
在Web应用层通讯,因为HTTP的无状态特性,使得HTTP通讯绝不依赖于TCP长链接,长久以来习惯了“一次性”的HTTP通讯,即一次TCP链接处理一个HTTP请求。服务器
HTTP长链接须要浏览器和Web服务器的共同协做。一方面,浏览器须要保持一个TCP链接并重复利用,不断发送多个请求,另外一方面,服务器不能过早的主动关闭链接。网络
Apache中,经过httpd.conf中的以下参数进行配置:
KeepAliveTimeout 30
浏览器的设置能够经过修改注册表修改超时时间。数据结构
动机:尽可能减小链接次数,尽可能重用链接通道。多线程
了解如下几种UNIX:并发
定义:Linux提供一种访问磁盘文件的特殊方式,它能够将内存中某块地址空间和咱们要指定的磁盘文件相关联,从而把咱们队这块内存的访问转换为对磁盘文件的访问。
* 大多数状况下,使用内存映射能够提升磁盘I/O的性能,它无须使用read()或者write()等系统调用来访问文件,而是经过mmap()系统调用来创建内存和磁盘文件的关联,而后像访问内存同样自由地访问文件。异步
直接IO
在MySQL中,对应Innodb存储引擎,其自身能够进行数据和索引的缓存管理,因此它对于内核缓冲区的依赖不是那么重要。MySQL提供了一种实现直接I/O的方法,在my.cof配置中,在分配Innodb数据空间文件的时候,使用raw分区跳过内核缓冲区,直接I/O。
sendfile
Linux中,sendfile将磁盘文件的特定部门直接传送到客户端的socket描述符,加快了静态文件的请求速度。
异步I/O
同步和异步是指数据访问的机制,同步通常指主动请求并等待I/O操做完毕的方式,当数据就绪后在读写的时候必须阻塞。异步是指主动请求数据后即可以继续处理其余任务,随后等待I/O操做完毕的通知,这可使进程在数据读写时也不发生阻塞。
本质上讲,全部到达服务器的请求都封装在IP包中,位于网卡的接收缓存区中,这时候Web服务器软件要作的是不断地读取这些请求,而后进行处理,并将结果写到发送缓冲区,这其中包含了一些列I/O操做和CPU计算, 而设计一个并发策略的目的,就是让I/O操做和CPU计算尽可能重叠进行,一方面要让CPU在I/O等待时不要空闲,另外一方面让CPU在I/O调度上尽可能花费最少的时间。