keepalive_timeout

2024-02-13 13:18
文章标签 keepalive timeout

本文主要是介绍keepalive_timeout,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、问题重现流程

   1、配置好tomcat后,直接加上nginx前段代理(仅配置了http代理);

   2、问题一:当管理员后台上传文件时,大文件无法上传成功,出现time-out,经重复测试,发现上传时间超过1分钟以后,就会返回超时信息,小文件没有问题;

   3、经调研得知nginx默认设置的http连接超时时间为75s,超过75s,会断掉当前的http连接,而大文件上传时经常会超过75s,这就导致大文件无法上传成功,当时的解决方案是,设置nginx http连接超时时间为30分钟,即参数keepalive_timeout=1800;文件上传问题基本解决;

  4、项目运行2天后,发现服务器突然宕机了,重启nginx可以解决问题,但是2个小时后又再次宕机,重启nginx又解决了问题,调研了一个中午,并且查看nginx的错误日志(socket() failed (24: Too many open files) while connecting to upstream),发现问题来源与nginx的连接数(设置的默认值为1024)达到上限;

   5、发现这个问题后,我就想应该把nginx的连接数调大点,于是设置 worker_connections  10240;重启nginx,短时间没有出现问题,但是运行过程中,我再次查看错误日志,发现(socket() failed (24: Too many open files) while connecting to upstream)时不时的出现;

   6、此时发现调整nginx的连接数并不能完全解决问题,于是google,百度之,发现问题所在,罪魁祸首是:nginx的keepalive_timeout设置项时间太长,客户端接口访问其实是一个比较快速的过程,访问完成了已经不需要继续使用http连接了,但是由于对nginx的错误配置,导致接口访问完成后http连接并没有被释放掉,所以导致连接数越来越大,最终nginx崩溃。

二、那么这个问题应该如何解决呢?

将keepalive_timeout时间调小会导致上传操作可能无法完成;调大点的话,许多无效的http连接占据着nginx的连接数;调整keepalive_timeout设置;

这篇关于keepalive_timeout的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705623

相关文章

ERROR: epmd error for host YOUR_HOSTNAME: timeout (timed out)的解决方案

问题现象 Warning: PID file not written; -detached was passed.ERROR: epmd error for host prd-can3-0-mq01: timeout (timed out) 问题解决 经过一番检查,其实RabbitMQ报这个错的原因是无法在/etc/hosts中正确识别主机名,因此只需修改该文件即可 127.0.0.1

Linux内核API wait_for_completion_timeout

概述 wait_for_completion_timeout函数功能描述:此函数用于阻塞当前进程,等待其他进程的执行结束,被等待进程保存在输入参数的wait字段所代表的等待队列中。有两种情况可以结束此种等待:第一,当等待队列中的进程被函数complete( )或函数complete_all( )唤醒,等待结束,阻塞进程将继续执行;第二,当等待的时钟节拍超时时,被阻塞的进程会继续执行。

Android 11 About SleepToken / (Settings)Screen timeout

Android R 激活Settings里面的息屏休眠, 最前台运行的Activity生命周期 ->onPause->onStop adb shell dumpsys window policy //获取PhoneWindowManager的dump信息...bootCompleted=truescreenState=SCREEN_STATE_ON /SCREEN_STATE_OFFint

VSCode连接SSH发生connection timeout

想用用实验室服务器连接vscode跑HM编码,今天突然连服务器连不到,报错:[13:47:13.068] Opening exec server for ssh-remote+a406-server-lan [13:47:13.082] Initizing new exec server for ssh-remote+a406-server-lan [13:47:13.089] Using com

Dubbo 接口 timeout 与 retries 用法

dubbo 版本 :2.7.10,SpringBoot:2.4.5 使用 Springboot 作为脚手架,加入 dubbo 依赖,服务 B 调用 服务 A,查看 timeout 与 retries 用法,注意 dubbo 从 2.7.7 开始推荐使用 DubboService 代替 Service,DubboReference 代替 Reference。 官方文档参考 以 timeo

k8s dial tcp 10.97.0.1:443: i/o timeout

问题 使用 kubeadm 部署完 k8s ,使用 projectcalico/tigera-operator 这个 chart 部署 calico ,卡在了 tigera-operator 这个 namespace 下的 pod tigera-operator-54b47459dd-n4x72,该 pod 一直重启,查看该 pod 日志发现如下报错 kubectl logs -f tige

MySQL出现锁等待Lock wait timeout exceeded该如何快速解决

目录 一、前言 二、锁等待是如何产生的? 三、如何避免锁等待? 四、出现锁等待,如何快速解决? 设置合理的锁等待超时时间 使用DBdoctor及时观测锁等待数据 五、总结 一、前言 在使用MySQL等数据库处理业务时,锁机制是确保数据一致性和完整性的重要手段。然而,锁的使用也可能带来一些问题,比如锁等待问题。当多个事务争夺相同资源时,如果不能立即获取,一个事务会进入等待状

eureka timeout exception

部门基于spring cloud体系构建微服务架构,在使用的过程中,不同的服务,都报以下的错误,想一探究竟: [2018-08-04 22:53:22] [ERROR] [DiscoveryClient-0] [com.netflix.discovery.TimedSupervisorTask:run:67] task supervisor timed out java.util.concurr

记录java使用selenium驱动谷歌浏览器中的坑(三)ExecuteException:The stop timeout of 2000 ms was exceeded

错误信息: INFORMATION: Unable to drain process streams. Ignoring but the exception being swallowed follows.org.apache.commons.exec.ExecuteException: The stop timeout of 2000 ms was exceeded (Exit value:

ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(10)

接前一篇文章:ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(9) 上一回继续解析process_keepalive函数,重点分析了其中调用的has_timed_out函数,本回继续往下解析。为了便于理解和回顾,再次贴出process_keepalive函数源码,在components\components\mqt