<Connector port="9999" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" acceptCount="150000"
maxThreads="2000" maxConnections="150000" enableLookups="false" redirectPort="8443" />
复制代码
connectionTimeout——默认设置为20秒。经过修改该参数,能够修改tomcat的请求超时时间html
acceptCount——当tomcat的线程数达到maxThreads后,新的请求就会排队等待,超过排队数的请求会被拒绝,acceptCount最好大于等于maxThreadslinux
maxThreads:nginx
(1)、部署的程序偏计算型,主要利用cpu资源,应该将该参数设置小一点,减少同一时间抢占cpu资源的线程个数。 (2)、部署的程序对io、数据库占用时间较长,线程处于等待的时间较长,应该将该参数调大一点,增长处理个数。web
maxConnections——这个值表示最多能够有多少个socket链接到tomcat上。NIO模式下默认是10000数据库
enableLookups——为了消除DNS查询对性能的影响咱们能够关闭DNS查apache
location ^~ /wnhz/websocket/ {
proxy_connect_timeout 60s;——该指令设置与upstream server的链接超时时间,有必要记住,这个超时不能超过75秒
proxy_read_timeout 3600s;——该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来得到请求的响应。这个时间不是得到整个response的时间,而是两次reading操做的时间
proxy_send_timeout 60s; ——这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操做期间。若是超时后,upstream没有收到新的数据,nginx会关闭链接
proxy_http_version 1.1;——支持websocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass http://test/websocket/;
}
--------------------- 官方配置--------------------------------------
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
复制代码
内存的占用分两部分,一部分是内核中tcp协议栈结构占用的内存,一部分是nginx中维持双向链接数据结构占用的内存
按照理想情况,一条tcp链接的数据结构在内存中占用大约4KB左右,nginx的内存占用,没有统计相关的结构体,这里就等于2KB(nginx的内存利用很是高效,有内存池)
对于如今的服务器来讲内存、cpu、网络都不会是瓶颈,所以这里不作讨论
复制代码
可能须要调整内核参数,文件描述符的数量其实也是和内存相关的,由于每打开一个tcp链接,就得占用一个文件描述符。
内核参数:fs.file-max
这是和系统资源相关的,也不会是瓶颈
复制代码
内核参数为:net.ipv4.ip_local_port_range,且最大值为65535
linux内核是经过{local_ip, local_port, remote_ip, remote_port}这个四元组来标识一条惟一的tcp链接的。
1)对于websocket服务器自身而言,local_ip, local_port是肯定的,在内存、cpu足够的状况下,其能够支撑 (client_ip数量*2^16)条链接。也就是说只要服务器资源足够,必定不会是瓶颈。
2)对于nginx服务器来讲,local_ip, local_port也是肯定的,不一样的是,它还要做为client去链接websocket服务器,这是要占用一个端口的。
所以,nginx能支撑的websocket链接数最大为:(代理的websocket服务器IP数量*2^16),若是只有一个websocket服务器IP,那么就只有65536,去掉0端口,就只有65535.
复制代码
百度介绍相关可自行测试。后端