只要是有数据读写的应用都有一个最大连接数和最大线程的配置,配置合理的最大连接数和线程数,可以有效防止应用崩溃

一. 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.

最大连接数和最大线程数相关知识点的总结相关推荐

  1. Spring boot中最大连接数、最大线程数与最大等待数在生产中的异常场景

    在上周三下午时,客户.业务和测试人员同时反溃生产环境登录进入不了系统,我亲自测试时,第一次登录进去了,待退出后再登录时,复现了客户的问题,场景像是请求连接被拒绝了,分析后判断是spring boot的 ...

  2. SpringBoot中修改tomcat最大连接数、最大线程数、最大等待数

    1)maxThreads(最大线程数)每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求,该参数决定了应用服务同时可以处理多少个HTTP请求,tomcat默认为200:2)a ...

  3. springboot tomcat 线程数相关配置

    server.tomcat.accept-count =100 # 当所有可能的请求处理线程都在使用时, 传入连接请求的最大队列长度. server.tomcat.max-connections = ...

  4. 如何有效控制 Go 线程数?

    前阵子,在读者交流群中有人提到 Go 默认设置的最大线程数的问题:如果超过一万个 G (挂载于 M 上)阻塞于系统调用,那么程序就会被挂掉. 这是对的,因为 Go 对运行时创建的线程数量有一个限制,默 ...

  5. 知识点查缺补漏贴03:单机最大进程数,线程数和Socket连接数

    前言: 参加Unix/Linux相关高级研发职位时,是否经常会被文档,单机允许最大进程数.线程数和Socket连接数,而你却感到束手无措呢?本文给你一个最为详细的答案. 一.最大进程数 运行Linux ...

  6. IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的...

    IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,这边先从普通不懂代码用户角度理解IIS连接数 顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫" ...

  7. IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的......

    IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,这边先从普通不懂代码用户角度理解IIS连接数 顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫" ...

  8. IIS连接数、并发连接数、最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数详解

    IIS:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池的最大工作进程数详解 iis性能指标的各种概念:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池 ...

  9. Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化

    解决问题: 怎样查看Mysql最大连接数(max_connections)?怎样修改max_connections? 怎样查看Mysql线程缓存池数量(thread_cache_size)?threa ...

最新文章

  1. OpenWebSpider 安装使用
  2. 前端学习(2388):封装请求模块
  3. python第六篇文件处理类型
  4. 开始VC6学习之旅2
  5. OOAD理论知识小结
  6. 程序员面试金典——18.10字符串变换
  7. String、StringBuffer、StringBuilder三者的区别
  8. 制造跨度 makespan是什么
  9. ESP8266教程——采用AT指令
  10. linux下qt实现vlc视频播放器,Qt编写视频播放器(vlc内核)
  11. 工作感想-软件测试工程师
  12. GSAP动画效果三——3D动画
  13. ASP.Net绑定Sql数据源用echarts图表来展示数据
  14. 二维码制作软件----如何让二维码内容换行显示
  15. 注销计算机桌面的东西会没有么,电脑注销会删掉内容吗
  16. OpenCascade源码分析之BRepMesh_IncrementalMesh(网格离散化操作)
  17. 阿里云独享虚拟主机和共享虚拟主机区别对比
  18. BAT都在封杀 React/React Native,我该怎么办?
  19. 深度学习中基本神经网络(二)
  20. java 批量删除_Java中怎样实现批量删除操作?

热门文章

  1. 6-8 连接字符串 (15 分)
  2. 【考试记录】Apsara Clouder云计算技能认证:云数据库管理与数据迁移
  3. VBA在Excel中的应用(一):改变符合条件单元格的背景颜色
  4. 苏州迅芯微电子 招聘FPGA开发工程师
  5. C语言:float、double表示范围
  6. 思考long 和 double都是8个字节为什么double范围更大?
  7. BraTS2021 + nnU-Net配置
  8. Brats2020数据集的读取—>python中对.nii格式数据读取
  9. java知识点小结(大学期末考试)
  10. 图像处理合集:图像基础操作(图像翻转、图像锐化、图像平滑等)、图像阈值分割(边缘检测、迭代法、OSTU、区域增长法等)、图像特征提取(图像分割、灰度共生矩阵、PCA图像压缩)