最近项目测试TPS时,一直上不去,因为是tomcat7所有默认是没开启NIO的,所以进行了简单的配置,TPS上升还是比较明显的,tomcat也支持aio了,还没接触过,不表
配置了线程池,并开启tomcat的NIO(http),在tomcat/conf/server.xml中配置:
<Executor name="tomcatThreadPool" prestartminSpareThreads="true" maxThreads="1000"
maxSpareThreads="600" minSpareThreads="100" maxIdleTime="60000"/>
<Connector port="8080" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" acceptCount="1000" redirectPort="8443" enableLookups="false"
bufferSize="512" URIEncoding="UTF-8" maxKeepAliveRequests="500" />
I/O类型:磁盘I/O模型,网络I/O模型,内存映射I/O, Direct I/O、数据库I/O等,只要具有输入、输出类型的交互系统都可以认为是I/O系统。
BIO (同步阻塞)
IO操作时,线程处于阻塞状态
NIO(同步非阻塞)
多路复用器轮询有效IO
AIO(异步非阻塞)
OSI七层模型
应用层:为操作系统或应用程序提供访问网络服务的接口
表示层:
会话层:
传输层:
网络层:
数据链路层:
物理层:
(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向DNS请求解析www.baidu.com的IP地址
(3) 域名系统DNS解析出百度服务器的IP地址
(4) 浏览器与该服务器建立TCP连接(默认端口号80)
(5) 浏览器发出HTTP请求,请求百度首页
(6) 服务器通过HTTP响应把首页文件发送给浏览器
(7) TCP连接释放
(8) 浏览器将首页文件进行解析,并将Web页显示给用户。
涉及到的协议
(1) 应用层:HTTP(WWW访问协议),DNS(域名解析服务)
DNS解析域名为目的IP,通过IP找到服务器路径,客户端向服务器发起HTTP会话,然后通过运输层TCP协议封装数据包,在TCP协议基础上进行传输
(2) 传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输)
HTTP会话会被分成报文段,添加源、目的端口;TCP协议进行主要工作
(3)网络层:IP(IP数据数据包传输和路由选择),
为数据包选择路由,IP协议进行主要工作
(4)数据链路层:ICMP(提供网络传输过程中的差错检测),ARP(将本机的默认网关IP地址映射成物理MAC地址)
相邻结点的可靠传输,ARP协议将IP地址转成MAC地址。