最大连接数和最大线程数相关知识点的总结
只要是有数据读写的应用都有一个最大连接数和最大线程的配置,配置合理的最大连接数和线程数,可以有效防止应用崩溃
一. tomcat:
tomcat是目前较为常用的Web容器,良好的配置能使用tomcat服务效率更高,
今天我主要解释一下tomcat的最大线程数(maxThreads)、
最大等待数(acceptCount)和最大连接数(maxConnections),连接超时(connectionTimeout)。1)maxThreads(最大线程数):每一次HTTP请求到达Web服务,
tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务可以同时处理多少个请求,默认200.2)accepCount(最大等待数):当调用Web服务的HTTP请求数达到tomcat的最大线程数时,
还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,
这个acceptCount就是指能够接受的最大等待数,
默认100.如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。3)maxConnections(最大连接数):这个参数是指在同一时间,tomcat能够接受的最大连接数。
一般这个值要大于maxThreads和acceptCount的和。4)connectionTimeout(连接超时) : 一个socket创建连接后,如何一直没有收到服务器返回数据,
将在此时间后将此连接释放. 默认值为60000毫秒
二.nginx:
在Nginx运行的时候,会启动两种进程,
一种是主进程master process;一种是工作进程worker process。worker_processes:配置文件中将worker_processes设置为4,启动Nginx后,
使用进程查看命令观察名字叫做nginx的进程信息,以看到1个nginx主进程,
master process;还有四个工作进程,worker process。
主进程负责监控端口,协调工作进程的工作状态,分配工作任务,
工作进程负责进行任务处理。一般这个参数要和操作系统的CPU内核数成倍数。worker_connections:这个属性是指单个工作进程可以允许同时建立外部连接的数量。
无论这个连接是外部主动建立的,还是内部建立的。这里需要注意的是,一个工作进程建立一个连接后,
进程将打开一个文件副本。所以这个数量还受操作系统设定的,进程最大可打开的文件数有关。
linux要求每个进程最大能同时打开1024的文件,但是可以修改
三. redis:
redis通过监听一个TCP端口或socket的方式接收来自客户端的连接,当与客户端建立连接后,redis内部会进行如下操作:(1)客户端socket会被设置为非阻塞模式,因为redis在网络时间处理上采用的是非阻塞多路复用模型;(2)然后为这个socket设置TCP_NODELAY属性,禁用Nagle算法;(3)然后创建一个可读的文件事件用于监听这个客户端socket的数据发送。
修改方式:
1. 修改配置文件:2.6之后版本,可以修改最大连接数配置,默认10000,
可以在redis.conf配置文件中修改# maxclients 10000 2. 启动时 redis-server --maxclients 100000 -f /etc/redis.conf
查看命令:
127.0.0.1:6379> CONFIG GET maxclients "maxclients" "10000"
四. mysql:
mysql是最流行的数据库之一,它的优化涉及多个方面,这次只说最大连接数和最大线程数
1. mysql的(max_connections)最大连接数默认是100, 最大可以达到16384
2. innodb_thread_concurrency:支持的最大并发执行的线程数常用的几个命令:
查看服务器的连接次数
show status like 'Connections';
查看曾经的最大连接数
show status like 'Max_used_connections';
查看当前连接的线程数
show status like 'Threads_connected';
查看当前正在运行的线程数
show status like 'threads_running';
查看线程缓存中的线程数
show status like 'threads_cached';
五. mongdb:
最大连接数默认值为50;启动里边加参数 --maxConns=20000或者在 /etc/mongod.cnf (我自己见的配置文件添加 maxConns=20000)其它常用的配置项:
#对mongo实例来说,每个host允许链接的最大链接数,这些链接空闲时会放入池中,如果链接被耗尽,任何请求链接的操作会被阻塞等待链接可用,推荐配置10
connectionsPerHost=10
#当链接空闲时,空闲线程池中最大链接数
minPoolsSize=5
#此参数跟connectionsPerHost的乘机为一个线程变为可用的最大阻塞数,超过此乘机数之后的所有线程将及时获取一个异常.eg.connectionsPerHost=10 and threadsAllowedToBlockForConnectionMultiplier=5,最多50个线程等级一个链接,推荐配置为5
threadsAllowedToBlockForConnectionMultiplier=5
#一个线程等待链接可用的最大等待毫秒数,0表示不等待,负数表示等待时间不确定,推荐配置120000
maxWaitTime=120000
#链接超时的毫秒数,0表示不超时,此参数只用在新建一个新链接时,推荐配置10,000.
connectTimeout=10000
#此参数表示socket I/O读写超时时间,推荐为不超时,即 0 Socket.setSoTimeout(int)
socketTimeout=0
#该标志用于控制socket保持活动的功能,通过防火墙保持连接活着
socketKeepAlive=false
#true:假如链接不能建立时,驱动将重试相同的server,有最大的重试次数,默认为15次,这样可以避免一些server因为一些阻塞操作零时down而驱动抛出异常,这个对平滑过度到一个新的master,也是很有用的,注意:当集群为复制集时,驱动将在这段时间里,尝试链接到旧的master上,而不会马上链接到新master上
#false 当在进行socket读写时,不会阻止异常抛出,驱动已经有自动重建破坏链接和重试读操作. 推荐配置false
autoConnectRetry=false
#重新打开链接到相同server的最大毫秒数,推荐配置为0,如果 autoConnectRetry=true,表示时间为15s
#com.jd.mongodbclient2.mongo.JDClientMongo.maxAutoConnectRetryTime=false
#表示当没有手动关闭游标时,是否有一个自动释放游标对象的方法,如果你总是很小心的关闭游标,则可以将其设为false 推荐配置true#com.jd.mongodbclient2.mongo.JDClientMongo.cursorFinalizerEnabled=true#安全模式com.jd.mongodbclient2.driver.MongoDBDriver.safe=true
#为true表示读写分离com.jd.mongodbclient2.driver.MongoDBDriver.slaveOk=false
六. rabbitmq:
修改RabbitMQ最大连接数.编辑/usr/lib/systemd/system/rabbitmq-server.service,在[Service]字段添加一行LimitNOFILE=65535:
rabbitmqctl命令可以查看配置信息:
xpfirst$rabbitmqctl status
Status of node 'rabbit@10-101-17-13' ...
[{pid,23658},......{file_descriptors,[{total_limit,924},{total_used,10},{sockets_limit,829},{sockets_used,10}]},......
]
...done.
最大连接数和最大线程数相关知识点的总结相关推荐
- Spring boot中最大连接数、最大线程数与最大等待数在生产中的异常场景
在上周三下午时,客户.业务和测试人员同时反溃生产环境登录进入不了系统,我亲自测试时,第一次登录进去了,待退出后再登录时,复现了客户的问题,场景像是请求连接被拒绝了,分析后判断是spring boot的 ...
- SpringBoot中修改tomcat最大连接数、最大线程数、最大等待数
1)maxThreads(最大线程数)每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求,该参数决定了应用服务同时可以处理多少个HTTP请求,tomcat默认为200:2)a ...
- springboot tomcat 线程数相关配置
server.tomcat.accept-count =100 # 当所有可能的请求处理线程都在使用时, 传入连接请求的最大队列长度. server.tomcat.max-connections = ...
- 如何有效控制 Go 线程数?
前阵子,在读者交流群中有人提到 Go 默认设置的最大线程数的问题:如果超过一万个 G (挂载于 M 上)阻塞于系统调用,那么程序就会被挂掉. 这是对的,因为 Go 对运行时创建的线程数量有一个限制,默 ...
- 知识点查缺补漏贴03:单机最大进程数,线程数和Socket连接数
前言: 参加Unix/Linux相关高级研发职位时,是否经常会被文档,单机允许最大进程数.线程数和Socket连接数,而你却感到束手无措呢?本文给你一个最为详细的答案. 一.最大进程数 运行Linux ...
- IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的...
IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,这边先从普通不懂代码用户角度理解IIS连接数 顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫" ...
- IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的......
IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,这边先从普通不懂代码用户角度理解IIS连接数 顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫" ...
- IIS连接数、并发连接数、最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数详解
IIS:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池的最大工作进程数详解 iis性能指标的各种概念:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池 ...
- Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化
解决问题: 怎样查看Mysql最大连接数(max_connections)?怎样修改max_connections? 怎样查看Mysql线程缓存池数量(thread_cache_size)?threa ...
最新文章
- OpenWebSpider 安装使用
- 前端学习(2388):封装请求模块
- python第六篇文件处理类型
- 开始VC6学习之旅2
- OOAD理论知识小结
- 程序员面试金典——18.10字符串变换
- String、StringBuffer、StringBuilder三者的区别
- 制造跨度 makespan是什么
- ESP8266教程——采用AT指令
- linux下qt实现vlc视频播放器,Qt编写视频播放器(vlc内核)
- 工作感想-软件测试工程师
- GSAP动画效果三——3D动画
- ASP.Net绑定Sql数据源用echarts图表来展示数据
- 二维码制作软件----如何让二维码内容换行显示
- 注销计算机桌面的东西会没有么,电脑注销会删掉内容吗
- OpenCascade源码分析之BRepMesh_IncrementalMesh(网格离散化操作)
- 阿里云独享虚拟主机和共享虚拟主机区别对比
- BAT都在封杀 React/React Native,我该怎么办?
- 深度学习中基本神经网络(二)
- java 批量删除_Java中怎样实现批量删除操作?
热门文章
- 6-8 连接字符串 (15 分)
- 【考试记录】Apsara Clouder云计算技能认证:云数据库管理与数据迁移
- VBA在Excel中的应用(一):改变符合条件单元格的背景颜色
- 苏州迅芯微电子 招聘FPGA开发工程师
- C语言:float、double表示范围
- 思考long 和 double都是8个字节为什么double范围更大?
- BraTS2021 + nnU-Net配置
- Brats2020数据集的读取—>python中对.nii格式数据读取
- java知识点小结(大学期末考试)
- 图像处理合集:图像基础操作(图像翻转、图像锐化、图像平滑等)、图像阈值分割(边缘检测、迭代法、OSTU、区域增长法等)、图像特征提取(图像分割、灰度共生矩阵、PCA图像压缩)