- 博客(23)
- 资源 (3)
- 收藏
- 关注
原创 解决webserver tcp连接大量CLOSE_WAIT 问题
netstat -n | awk '/^tcp/ {++S[$NF]} END{for(a in S) print a, S[a]}' LAST_ACK 1 SYN_RECV 15CLOSE_WAIT7729 ESTABLISHED 471 FIN_WAIT1 3 FIN_WAIT2 52 SYN_SENT 1 TIME_WAIT 725 从结果可以看到有大量的连接处于CLOSE_WAIT状态。要解决这个问题的可以修改系统的参数,系统默认超...
2021-07-19 22:44:14 522 1
原创 [Socket]尴尬的CLOSE_WAIT状态以及应对策略
介绍本项目是对springboot官方提供的websocket进行的netty版本封装,api与原版的完全一致,让广大springboot用户更方便的使用netty版本的websocket。netty与tomcat的相比,占用内存更小,效率更高,在特殊环境下,netty的效率是tomcat的20倍,想更轻松的使用netty版本的websocket,那么现在就来使用它吧!~~使用说明添加maven库 <dependency> <groupId>com.s
2021-07-19 22:42:45 1722
原创 TOMCAT websocket 多连接内存泄漏与jetty对比分析
服务器环境8核 32G内存问题:在5000个连接的时候Tomcat内存基本吃满Tomcat 压测: 连接数 内存消耗 CPU 1000 6.9G 100% 2000 12G 100% 3000 19G 100% 4000
2021-07-19 22:41:46 1140
原创 springboot-websocket-netty
介绍本项目是对springboot官方提供的websocket进行的netty版本封装,api与原版的完全一致,让广大springboot用户更方便的使用netty版本的websocket。netty与tomcat的相比,占用内存更小,效率更高,在特殊环境下,netty的效率是tomcat的20倍,想更轻松的使用netty版本的websocket,那么现在就来使用它吧!~~使用说明添加maven库 <dependency> <groupId>com.s
2021-07-19 22:41:20 1235
原创 Tomcat和Jetty对WebSocket的支持
公司项目须要,了解了下眼下几种支持WebSocket的框架。曾经用jWebSocket做过一些项目。相对来说。改jWebSocket的源代码略复杂,也不是一天两天能搞定的。一调研才发现,如今非常多主流的web框架都已经開始支持WebSocket了,不得不感慨时间太快,科技进步太快,在微策略的几年真的荒废了。不多说,先记录下今天的研究。Tomcat: J2EE以下用的最多的容器应该就是tomcat了。说到tomcat对WebSocket的支持,不得不先提一下,眼下...
2021-07-15 00:32:51 714
原创 Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。1)bio默认的模式,性能非常低下,没有经过任何优化处理和支持.2)nio利用java的异步io护理技术,no blocking IO技术.想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为 <Connector port=...
2021-07-15 00:24:43 91
原创 关于tomcat和jetty对比(不喜欢jetty的勿看)
首先转载下别人总结的文章相同点:1.Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。不同点:1.架构比较Jetty的架构比Tomcat的更为简单Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。2.性能比较Jetty和Tomc...
2021-07-15 00:18:44 4347
原创 Jetty 与 Tomcat 比较,及性能分析
主流java的web容器,主要是Tomcat, jboss, jetty, resin。由于以前我们主要用的是jboss4.0.5,但jbosse用的servlet容器是tomcat5.5,所以只进行tomcat和 jetty的比较,两个谁好谁坏,适合你用,你才知道。resin就不说了,好像已经成为了history.一、Tomcat现在Tomcat版本已经是8.0了,在Tomcat6和7都增加了很多新的特性。版本 特性Tomcat7系列Tomcat6系列二、jetty由...
2021-07-15 00:17:21 1350
原创 Tomcat 和 Jetty 比较和Spring Boot集成
一、Tomcat 和 Jetty 的比较Tomcat 和 Jetty 都是作为一个 Servlet 引擎应用的比较广泛,可以将它们比作为中国与美国的关系,虽然 Jetty 正常成长为一个优秀的 Servlet 引擎,但是目前的 Tomcat 的地位仍然难以撼动。相比较来看,它们都有各自的优点与缺点。 Tomcat 经过长时间的发展,它已经广泛的被市场接受和认可,相对 Jetty 来说 Tomcat 还是比较稳定和成熟,尤其在企业级应用方面,Tomcat 仍然是第一选择。但是随着 Jetty 的发展,Je
2021-07-15 00:14:00 705
原创 从源码剖析SpringBoot中Tomcat的默认最大连接数
为什么你的websocket只能建立256个连接?推出后,有许多小伙伴问:关键是怎么解决256这个问题。嗯,可能是我的标题起的有点问题,不过如果有认真阅读文章的话,应该会知道,其实256的限制是Chrome浏览器对WebSocket进行的限制。不过,对于一个客户端来说,假如一个窗口建立一个WebSocket连接的话,想要达到256个连接,需要打开256个窗口,这个一般来说很少出现。所以大家并不需要太多的担心这个前端限制。不过,谈到请求连接数限制的问题,我们倒是可以将注意力转移到后端的配置上来。上篇推文中
2021-07-15 00:06:35 2400 1
原创 SpringBoot maxConnections、maxThreads、acceptCount解析
详解:maxConnections、maxThreads、acceptCounttomcat中maxConnections、maxThreads、acceptCount的具体含义是什么呢?参考官方文档,对三者的含义说明如下:一、accept-count:最大等待数官方文档的说明为:当所有的请求处理线程都在使用时,所能接收的连接请求的队列的最大长度。当队列已满时,任何的连接请求都将被拒绝。accept-count的默认值为100。详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还
2021-07-15 00:04:16 1652 2
原创 SpringBoot内置Tomcat支持多大并发量和连接数
SpringBoot内置Tomcat,再默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,200个线程如何处理10000条连接的? Tomcat有两种处理连接的模式,一种是BIO,一个线程只处理一个连接,另一种就是NIO,一个线程处理多个连接。由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。 默认值可以在spring-boot-autoconfigure-2....
2021-07-15 00:03:27 3278
原创 Spring boot中最大连接数、最大线程数与最大等待数在生产中的异常场景
在上周三下午时,客户、业务和测试人员同时反溃生产环境登录进入不了系统,我亲自测试时,第一次登录进去了,待退出后再登录时,复现了客户的问题,场景像是请求连接被拒绝了,分析后判断是spring boot的连接数使用完了,于是重启了服务,客户访问都恢复正常。虽然问题暂时解决了,但实质原因还无法确定。根据分析,判断是spring boot服务连接被拒绝,查看配置的最大连接数和最大线程数时,配置为:#最大连接数server.tomcat.max-connections=300#最大线程数server.tomc
2021-07-15 00:01:41 3214
原创 置springboot自带tomcat的最大连接数和最大并发数
设置springboot自带tomcat的最大连接数和最大并发数从源代码来看,最大连接数和最大并发数默认是10000和200可以通过工程下的application.yml配置文件来改变这个值server:tomcat:uri-encoding: UTF-8max-threads: 1000max-connections: 20000...
2021-07-15 00:00:45 1917
原创 Linux下性能压测之系统参数调优
1. 前言在做服务端压测的时候,经常会遇到一些由于Linux系统限制导致压力上不去的情况,这里从Linux系统参数上做一些调优,减少此类因素的干扰。2. 配置2.1 Linux系统配置执行:sudo vi /etc/sysctl.conf,添加以下内容:net.ipv4.tcp_syncookies = 0fs.file-max = 12553500fs.nr_open = 12453500kernel.shmall= 1048576kernel.shmmax = 188743
2021-07-14 22:45:02 992
原创 压力测试时候Linux系统参数的调优
有个站点,我用ab做压测,结果ab总是返回错误,我做了如下的一些调优,最后正常了。nginx的配置.conf:worker_processes 32;worker_connections 65536;过多的TIME_WAIT在压力中,通过netstat发现很多TIME_WAIT的连接描述符:netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'ss -ant
2021-07-14 22:42:41 262
原创 nginx配置websocket转发功能
之前配置好了服务器上面的linux-dash和jupyter notebook,然后想着每次都是要输入ip和端口很麻烦,于是想给它配置个网址,然后用Nginx转发过去。前面都很顺利,DNS解析增加记录,配置Nginx。但是遇到了奇怪的问题,linux-dash迟迟不显示系统状态,重启了N遍还是没办法,jupyter能登录但是没办法连接到内核,显示kernel error,点开就是not found。找了很久的问题,最后猜测是nginx的问题,然后发现他们都有个共同点那就是用了websocke
2021-07-14 22:41:41 696
原创 使用Nginx代理和转发Websocket连接
1.Websocket 简介WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。2.Nginx 简介Nginx是一个反向代理服务器,所有的来自浏览器的请求必须经过Nginx。通常的正向代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,此时客户机是主动方。而在反向代理中,web服务器是主动
2021-07-14 22:39:09 1244
原创 nginx转发websocket
nginx转发websocket1、Nginx 支持websocket的配置server { listen 80; server_name 域名; location / { proxy_pass http://127.0.0.1:8080/; // 代理转发地址 proxy_http_version 1.1; proxy_read_timeout 3600s; // 超时设置 // 启用支持w
2021-07-14 22:37:17 3809
原创 Nginx 解决WebSocket TCP 转发问题
#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; defau.
2021-07-14 22:35:34 786
原创 linux的TCP连接数量最大不能超过65535个,那服务器是如何应对百万千万的并发的?
光是在知乎上这个问题我都看了好几遍了,问之前先搜一下不好吗?简单说来:TCP连接数量最大不能超过65535是错的。一个连接由一个5元组决定(protocol,local IP,local port,remote ip,remote port),对于TCP,protocol固定是TCP,还有四个元素。对于服务器来说,local port一般是固定的,比如HTTP(80),但是remote ip和remote port没有限制。连接数量是没有限制的,除非是一个端口只能有一个连接。你说的这个65535
2021-07-11 15:04:40 1542 1
原创 Netty与Spring WebSocket
刚开始的时候,我尝试着用netty实现了websocket服务端的搭建。在netty里面,并没有websocket session这样的概念,与其类似的是channel,每一个客户端连接都代表一个channel。前端的ws请求通过netty监听的端口,走websocket协议进行ws握手连接之后,通过一些列的handler(责链模式)进行消息处理。与websocket session类似地,服务端在连接建立后有一个channel,我们可以通过channel进行与客户端的通信 /** * TO
2021-07-03 20:44:30 5525 1
原创 关于WebSocket分布式实现的一种方案
WebSocket常用于做后台消息推送,也可以做简易的IM聊天,由于WebSocket中的Session没有实现序列化接口的,我们无法将session序列化实现分布式部署,今天就来记录一种分布式的实现方案。实现原理首先我们讲的这种方式是利用redis订阅和发布模式来实现,大致过程:每个服务器记录连接,保存在内存当中 当需要推送websocket消息的时候,同时在redis发布一个消息 每个服务器订阅redis的消息,当监听到有消息时,每台服务器遍历自己内存当中的连接进行发送这样我们就可以实
2021-07-03 20:40:03 2257 1
score.csv (score.csv)
2020-02-29
teacher.csv
2020-02-29
student.csv
2020-02-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人