tomcat keepAliveTimeout=0问题

Jedis连接超时问题分析 Unexpected end of stream 文章目录Jedis连接问题一、现状二、复现 - _Unexpected end of stream_三、分析 - _Unexpected end of stream_四、方案 - _Unexpected end of stream_方案一:设置服务端不超时 _timeout=0_方案二:设置TestOnBorrow = true,服务端超时30s方案三:设置最大空闲连接为0方案四:设置Jedis驱逐策略方案对比:以上方案均可解决服务端超时报错的问题。五、验证Jedis最大连接参数 Jedis连接问题 阅读详情

      最近升级tomcat到7.0.70上线,之后几天服务端句柄很高,定位后发现是应用服务上有很多连接,但是实际没有这么多用户在线,在测试环境上重现,抓包发现在keepAliveTimeout=0的情况下,是客户端发起FIN包,而改为2000之后,则是服务端发FIN包,参考https://tomcat.apache.org/tomcat-7.0-doc/config/http.html,keepAliveTimeout=-1表示永不断连才对的话,0应该是响应完立马断开连接呀;

     后来看了版本对应的tomcat源码,找到了问题所在。在升级之前是bio,断连时的逻辑为

if ((now-access)>socket.getTimeout()) {
    processSocketAsync(socket,SocketStatus.TIMEOUT);
}
升级后使用nio,断连逻辑为

boolean isTimedout = timeout > 0 && delta > timeout;
if (close)
{
    key.interestOps(0);
    ka.interestOps(0); // avoid duplicate stop calls
    processKey(key, ka);
}
else if (isTimedout)
{
    key.interestOps(0);
    ka.interestOps(0); 
    cancelledKey(key, SocketStatus.TIMEOUT, true);
}
同样,升级后版本bio的断连逻辑为

if (socket.getTimeout() > 0 && (now - access) > socket.getTimeout())
{
    socket.setTimeout(-1);
    processSocketAsync(socket, SocketStatus.TIMEOUT);
}
问题就在多了个getTimeout()>0啊(这个值就是我们配置的keepAliveTimeout)导致的结果就是负数和0其实都是一直不释放,结果服务端连接一直眼巴巴等着客户端发FIN包




制造业信息化的现实困局与未来展望:从基础到数字化的挑战与机遇 随着全球科技的发展和市场竞争的加剧,制造业的转型升级成为企业必须面临的挑战。在信息化和数字化的浪潮下,许多企业试图通过技术创新来提升自身竞争力。然而,现实情况是,绝大部分制造业企业的基本信息化都尚未完成,更遑论复杂的数字化。那么,制造业在信息化进程中面对哪些阻碍?未来又该如何实现从基础信息化到数字化的转型? 阅读详情

相关推荐

西门子200 SMART与博图WinCC通讯全攻略:从PC Access到S7-200协议避坑指南

本文详细解析了西门子S7-200 SMART PLC与博途WinCC上位机通讯的两种主流方案:基于PC Access SMART的OPC通讯和利用博途内置S7-200协议驱动直连。文章深入对比了两种架构的优缺点、配置步骤,并提供了从网络层到软件层的深度排错指南与性能优化建议,帮助工程师高效、稳定地实现系统集成。

gg901的博客 808

tomcat中的 keepAliveTimeout 和maxKeepAliveRequests

HTTP 持久连接 持久连接(Keep-Alive)也叫做长连接,它是一种 TCP 的连接方式,连接会被浏览器和服务器所缓存,在下次连接同一服务器时,缓存的连接被重新使用。由于 HTTP 的无状态性,人们也一直很清楚“一次性”的 HTTP 通信。持久连接则减少了创建连接的开销,提高了性能。HTTP/1.1 已经支持长连接,大部分浏览器和服务器也提供了长连接的支持。 可以想象,要想发起长连接,服...

jackyrongvip的专栏 1万+

从零开始:用7353张VOC/YOLO格式混凝土缺陷数据集训练你的第一个检测模型

本文详细介绍了如何使用7353张VOC/YOLO格式的混凝土缺陷数据集训练首个目标检测模型。从环境配置、数据解析到YOLOv5模型训练与优化,提供了完整的实战指南,特别针对数据不平衡问题给出了解决方案,助力开发者快速掌握混凝土缺陷识别技术。

weixin_42651281的博客 255

Tomcat进程假死问题排查

排查步骤 1.内存溢出 分析当时的gc.log 是否有内存溢出的情况,或者直接grep OutOfMemoryException catalina.sh查看是否有内存溢出异常。 2. jvm GC 时间过长,导致应用暂停 查看gc.log回收时间,以下为例子: 7581088.402: [Full GC (System) 7581088.402: [CMS: 661091K->669762K(7340032K), 1.7206330 secs] 848607K->669762K(8

小猴子的博客 8178

libVLC 视频抓图

libVLC 中通过libvlc_video_take_snapshot核心接口来截图。以下是VLC播放器中使用的截图界面,我们仿照这个做一个界面。首先,你需要初始化 libVLC 实例和媒体播放器对象。1. 初始化 libVLC 和媒体播放器。菜单添加action,并响应槽函数。生成目录下snap.png。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 1939

华为OD机考双机位C卷 - 打印机队列 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 打印机队列

算法大师! 4619

Linux中配置Nginx反向代理、负载均衡

Linux中配置Nginx反向代理、负载均衡

weixin_53620483的博客 1365

【AI Agent教程】各种Agent开发框架都是如何实现ReAct思想的?深入源码学习一下

驱动大模型有很多种方式,例如纯Prompt方式、思维链方式、ReAct方式等。ReAct 方式是 AI Agent 最常用的实现思路之一,它强调在执行任务时结合推理(Reasoning)和行动(Acting)两个方面,使得Agent能够在复杂和动态的环境中更有效地工作。

同学小张的博客 6396

nginx参数keepalive_timeout

参数说明 语法: keepalive_timeout timeout [header_timeout]默认值: keepalive_timeout 75s;使用字段: http, server, location参数:参数1指定了客户端与服务器 keep-alive的超时时间,值为0将禁用 keep-alive功能。参数2(可选)在HTTP响应头”Keep-Alive:...

OfficerGoodbody的博客 1万+

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信号方面,常见的格式有RGB888、RGB666、RGB565。为什么有什么多选择,主要还是取决于soc pin脚的多少来定。当然,pin脚越多,显示的颜色就越精准,还原度就越高。 举例来说,假设

嵌入式-老费,一个分享专业嵌入式知识的blog 2792

【数字IC设计】芯片设计中的RDC

在芯片设计中,RDC是的缩写,类似于CDC(clock domain crossing),由于现在SOC芯片是有很多ECUs组成,为了使整个系统能够快速从复位中恢复, 用户希望SOC里面每个ECU模块都可以有自己独立的异步复位信号,这样可以在出问题的时候只复位有错误逻辑的模块,而使其它模块保持正常工作。

qq_40268672的博客 2182

Tomcat假死问题分析与性能优化实战

Tomcat作为Java Web应用的主流容器,其线程池管理与连接保持机制直接影响服务稳定性。当maxThreads线程数耗尽时会出现假死现象,表现为进程存活但无法响应新请求。通过调整keepAliveTimeout和maxKeepAliveRequests参数可优化连接复用策略,配合NIO2协议和线程池扩展能显著提升并发处理能力。在Linux生产环境中,还需结合TCP参数调优和熵池配置,解决Manager应用访问缓慢等问题。本文提供的配置方案和监控方法,可帮助开发者构建高可用的Tomcat服务架构。

diaogan4202的博客 270

用miniconda建立PyTorch、Keras、TensorFlow三个环境

如果还没有安装Miniconda,请从[Miniconda官网](https://docs.conda.io/en/latest/miniconda.html)下载合适的版本并进行安装。如果遇到问题,可以通过编辑`~/.condarc`文件来临时禁用某个源,或者通过`conda config --remove channels`命令来移除配置的镜像源。要切换到不同的环境,先使用`conda deactivate`命令退出当前环境,再用`conda activate 环境名称`命令激活另一个环境。

数字人生 2464

实测Tomcat的几个参数

简单测试一下Tomcat参数

学习笔记 4480

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

springboot内嵌tomcat调优

在springboot-configuration-metadata.json文件下面,有很多属于springboot得喷子hi属性,以下为tomcat的默认配置属性: server.tomcat.accept-count:等待队列长度,默认100(队列也做缓冲池用,但也不能无限长, 不但消耗内存,而且出队入队也消耗CPU) server.tomcat.max-connections:最大可被连接数,默认10000 server.tomcat.max-threads:最大工作线程数,默认200,线程数不是

m0_67390969的博客 1300

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Tomcat 5.5.x到Tomcat 6.0

tomcat6新特性及变化 1、tomcat6实现了servlet2.5和JSP2.1规范。2、内存使用优化; 3、优化了http IO connector的性能. 4、增加了http NIO connector,对于大量并发网站可以显著提高性能; 5、更好的支持Etag; 6、完全重构了cluster; 7、对大部分connector增加了keepAliveTimeout属性;变化点:1、需要j...

KissHope 146

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

工作总结34 Tomcat7.0.79参数配置的问题

最近在做部署的Tomcat7版本的性能优化,百度相关的资料后,配置的相关的参数后,后台显示警告信息,Tomcat启动的时候,报没有这几个属性。比如:minProcessors,maxProcessors,useURIValidationHack,都提示tomcat7没有这几个属性。但是这几个值在http://tomcat.apache.org/tomcat-7.0-doc/config/http.

尹若轩 1263

tomcat短连接与长连接的配置

背景:一个系统的数据向另一个系统推送上千万的数据时,发生报错,报错如下:  错误信息Caused by: java.sql.SQLException: Io 异常: Connection reset by peer: socket write error 错误原因:客户端与服务端的连接设置了超时时间,服务端那里的连接时间已经超时,而客户端不知道这个连接已经超时,接着访问,就会出现这个错误解决:在T...

paul 7572

配置TOMCAT及httpClient的keepalive以高效利用长连接

配置TOMCAT及httpClient的keepalive以高效利用长连接 总所周知http1.1(http1.0不是标准,依服务器而定)是支持长连接的,长连接能够保证服务器和客户端的socket能够高效利用,减少握手等额外的开销。httpClient在正常情况下会带上Connection: keep-alive表示我是支持长连接的,当完成一个请求后,视情况决定是否关闭连接。 正常情...

xls51314202005的博客 1456

Nginx与Tomcat、Client之间请求的长连接配置不一致问题解决[转]

Nginx与Tomcat、Client之间请求的长连接配置不一致问题解决[转] ...

weixin_30756499的博客 109

nginx到tomcat有大量CLOSE_WAIT状态连接

nginx到tomcat有大量CLOSE_WAIT状态连接 原因总结: 资源未及时释放 数据库连接未及时释放,数据库连接池满后新的请求阻塞:https://blog.youkuaiyun.com/yu616568/article/details/44677985 httpclient创建的socket连接未及时释放,连接池占用满:https://blog.youkuaiyun.com/zhang4852898/article/details/91607636 如:当Server的后端用client类别连到Remo

Jancy2265的博客 1938

HTTP keep-alive及Tomcat配置分析

1. HTTP协议关于keep-alive的说明 参考“Hypertext Transfer Protocol – HTTP/1.1-8.1 Persistent Connections”( https://tools.ietf.org/html/rfc2616#section-8.1 )。 在持久化连接出现之前,每次访问URL都需要建立一个独立的TCP连接,会增加HTTP服务器的负载,并导致网络拥塞。 持久的HTTP连接有一些优势,例如打开与关闭的TCP连接会减少,可以减少中间经过节点的CPU时间及内存等

adrninistrat0r的博客 5570

SpringBoot内嵌Tomcat防护Slow HTTP攻击实战指南

Slow HTTP攻击是一种利用HTTP协议特性发起的拒绝服务攻击,通过长时间占用服务器连接资源导致服务不可用。其核心原理是攻击者故意缓慢发送请求头或请求体,耗尽服务器的线程池资源。在Java生态中,SpringBoot内嵌的Tomcat服务器默认配置存在安全隐患,特别是maxThreads与maxConnections参数设置不当会放大攻击效果。通过合理配置connectionTimeout、keepAliveTimeout等参数,结合线程池优化和连接限流策略,能有效提升系统抗攻击能力。本文以金融系统压力

weixin_29238147的博客 306

tomcat 7的Connector的connectionTimeout配置

同事将tomcat 7的的Connector的connectionTimeout配置为0,结果出现了如下的错误: 比较大的文件无法下载,下载一部分就停止了。日志监控中能看到下面的错误, net error CONTENT LENGTH MISMATCH ClientAbortException IOException  原来,connectionTimeout配置为0表示超时时间为...

点点滴滴 5430
上一篇: CAS锁为什么是乐观锁呢
下一篇: JDK1.6在SUSE11下问题跳变定时任务失效问题记录
coder_xia
博客等级 码龄17年 151粉丝 143原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值