优化涉及的连接相关配置
前言
以前总以为压测TPS上不去,是垃圾回收没配好或者Redis性能评测。为了提高TPS,试了多个垃圾回收的优化配置、也把缓存全改成本地缓存,但是TPS还是上不去。
最后发现其实是连接和线程池都没配置好。
小孩子不吃饭,胃口再大也长不高。
排泄不正常,会长痘痘的
tomcat配置
#最大线程数(指的是处理业务的线程)
server.tomcat.threads.max
#最小线程数(空闲时依旧不关闭)
server.tomcat.threads.min-spare-
#队列长度
server.tomcat.accept-count
#最大连接数
server.tomcat.max-connections
#连接建立的超时时间
server.tomcat.connection-timeout
解释:
threads.max 默认200,如果设置过大,消耗系统资源,例如栈空间。上下文切换频繁也会导致业务卡顿。如果设置太小,又没法充分利用CPU的处理能力。
一般来说,互联网应用多属于IO密集型,CPU消耗并不在业务服务器而是Mysql、Redis这些服务,所以在内存运行的前提下是可以设置大点。服务如果内存不足以创建更多连接,可以用-Xss配置线程栈空间大小,从而创建更多线程。
max-connections 默认值8192,可创建连接的最大数,连接数超出这个值后,系统还能接受新连接,但是不创建(接收但是不发送SYN-ACK
),从客户端的角度看就是请求卡在连接的阶段,只有当前连接数小于max-connections 时,才继续创建新连接。可以运行创建比处理线程数还多的连接,但是连接会占用文件句柄,如果tomcat的连接数过多了导致当前服务访问其他服务的连接创建不了。
accept-count 默认值100,连接数超出max-connections ,还能再接受新连接的数量是这个值,请求连接的数量超出这个值,会丢弃连接 。在客户端看到就是连接不可用
连接池配置(数据库和redis)
#空闲时的最大连接数
maxIdle
#最大连接数,一般设置为可能的请求数量
maxActive
#获取连接的最大等待
maxWait
#配置略去部分前缀
Redis连接池的maxActive和Redis的maxclients设置大些,redis是单线程,没有上下文切换的问题,多创建连接可以获得更好的性能。但是也不是无限增大,因为连接都是需要占用文件句柄的
RabbitMq连接工厂配置 (其实也是连接池)
有两种模式 CONNECTION模式和CHANNEL模式
前者会同时缓存Connection和Channel,后者只会缓存Channel。
RabbitMq是用到tcp复用,但是在并发较高的情况下,单连接也会出现瓶颈
#可以设置可以缓存的channel
cache.channel.size
#可以设置缓存可以缓存的连接
cache.connection.size
#配置略去部分前缀
Http Client 连接池
有两个地方
如果项目中用了ApacheHttpClient:
#最大连接数
feign.httpclient.max-connections
#每个地址的最大连接数
feign.httpclient.max-connections-per-route
如果没有ApacheHttpClient:
#最大连接数
ribbon.MaxTotalHttpConnections
#每个地址的最大连接数
ribbon.MaxConnectionsPerHost
Hystrix 线程池
hystrix.threadpool.default.coreSize
hystrix.threadpool.default.maximumSize
当然,如果下游接口响应很快(比如全是走redis或者内存),用Hystrix线程池隔离的方式,线程的上下文切换消耗的时间也是需要考虑的,尤其高并发下。这时可以采用信号量隔离的方法。(需要支持“超时”时,依旧需要启动一个HystrixTimer线程)
#支持信号量
hystrix.command.default.execution.isolation.strategy=SEMAPHORE
#信号量模式下默认的最大请求数
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests=1000
备注:default是修改默认的策略,线上可以指定GroupKey或者commandKey去配置
Linux操作系统
Linux创建连接依赖于文件句柄,设置最大文件句柄可以创建更多连接
在 /etc/security/limits.conf 加入
- soft nofile 65536
- hard nofile 65536
TIME_WAIT 数量过多
压测时查看time_wait 数量
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
如发现系统存在大量TIME_WAIT状态的连接,这些连接也占用文件句柄,通过调整内核参数解决:
编辑文件/etc/sysctl.conf,加入以下内容:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 修改FIN-WAIT-1、FIN-WAIT-2、TIME-WAIT的TIMEOUT时间
优化涉及的连接相关配置相关推荐
- redis专题:redis键值设计、性能优化以及redis连接池配置
文章目录 1.redis键值设计 ①:key设计规范 ②:value设计规范 2. 命令使用优化 3. redis连接池配置参数设计 4. redis连接池预热 5. redis的key过期删除策略 ...
- Altium Designer20版本的相关配置跟优化(很重要)
对于学习 Altium Designer同学,它的相关配置跟优化非常重要,优化就是把不需要的给剔除了,这样软件加载就不会很慢. 接下来,我就给大家介绍一下如何配置跟优化它. 默认是安装是英文的,后面也 ...
- 性能优化之数据库和数据源连接池配置
什么?!数据库连接拿不到? 今天在公司对系统进行压测,由于我的sit和dev和uat环境都是用的用的是一个数据库服务器,我让用户在的sit进行压测,分别是单线程测试,并发测试,但是用户一开始测,我的三 ...
- Linux学习之ARM开发板连接ubuntu18.04LTS及NFS相关配置
Linux学习之ARM开发板连接ubuntu18.04LTS及NFS相关配置 第一步:在PC机安装Ubuntu18.04LTS 具体安装步骤参见上一篇文章 第二步:安装arm-linux-gcc交叉编 ...
- 远程连接linux配置文件,Linux远程连接介绍及相关配置
Linux远程连接介绍及相关配置 1.使用远程连接的根本原因 在企业现实的工作中,我们不可能每台服务器都配置一台显示器,也不可能时刻在服务器旁边,但是我们企业中的服务器需要时刻进行维护,而我们维护人员 ...
- mysql连接参数配置
前言 mysql性能优化涉及到很多方面,在上一篇中通过explain打印出sql的执行计划可以作为指导开发人员进行sql优化是一个方面,另外,mysql自身的参数配置也很多,比如连接参数(connec ...
- mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理
前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...
- 转战物联网·基础篇12-了解物联网之物连接相关通信技术(1)
转战物联网·基础篇12-了解物联网之物连接相关通信技术(1) 一.物连接架构概览 1.通过一张图了解"物连接" 2.网关控制器内部功能 二.硬件设备间组网的物理链路形式 1.有线组 ...
- 转战物联网·基础篇13-了解物联网之物连接相关通信技术(2)
转战物联网·基础篇13-了解物联网之物连接相关通信技术(2) 三.硬件设备间组网的通信技术与通信协议(2) 11.6LoWPAN 12.PROFINET 13.EtherCAT 14.RFID.NFC ...
最新文章
- 元宇宙中可跨语种交流,Meta 发布新语音模型,支持128种语言无障碍对话
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...
- java.awt.Graphics2D绘制流程图基本元素
- oracle聚合函数wmsys,oracle 自定义聚合函数
- leetcode python3 简单题21. Merge Two Sorted Lists(Linked)
- Linux的段错误调试方法
- 中兴2016笔试题答案Java_中兴笔试题和面试题答案与答案
- (丝滑版)Python使用Opencv画一个哆啦A梦(动态),并制作成可执行文件.exe
- bluetooth 驱动 Makefile
- Spark面试题及其答案
- html 毛笔书写效果,canvas 手写毛笔字效果
- 计算机R3处理器,2018年3月最新版处理器天梯图 秒懂三月台式电脑处理器性能排行...
- GIS应用技巧之环形地图制作
- 什么是DFX测试.md
- JQuery 的添加元素
- 计算机课怎样制作ppt 课件ppt,计算机多媒体课件制作.ppt
- rtmp协议规范详解
- Unity基础笔记(6)—— Unity导航系统
- FLASH 模拟程序学习笔记(1)
- 头脑风暴会的10项原则