做项目的时候遇到这样一个问题,我用redis连接池做计数器来控制限流。服务中有上百个接口,每请求一次就会往redis的计数器+1. 但我的Redis配置Ipport错误导致redis连接一直超时,此时看cpu占用率翻了3倍,这是什么原因呢?我理解是超时导致连接池的连接不能被及时释放,而大量的请求过来导致连接数被打满。想问一下大家,1、 cpu占用率翻了3倍,这是什么原因? 2、如果是我的猜想,连接数打满为什么导致CPU占用升高这么多
请求太多了,连接超时是有响应时长的,发送请求需要等待一定时间后,才能收到连接请求超时响应结果。
所以,请求占用cpu数递增性升高,导致cpu升高。
1、这是redis连接不上会有重试机制,导致资源不被释放
2、连接数都打满了,说明连接没有释放,当然资源也就不被释放,CPU资源占用就变高
出现频繁调用的短连接,导致cou占用升高
请求量大并发大,redis的连接会迅速占满,然后每个连接都会占用一些内存,当内存达到临界点时cpu也就跑不动了。
redis连接池初始化的时候会设置一些基本信息,超时时间,初始化数量,最大连接数,最小连接数等,如果连接数设置的过小,那么请求的数据redis处理不过来,连接就不会释放,会比较占用服务器资源,导致cpu占用率较高,当设置适当的大小时,redis中的连接信息处理完数据就释放了,不会占用太多资源信息,cpu也会适当下降
超时会导致计算机再超时时段扫描端口,把等待时间调整一下(长和短都试试)
并发量大,处理不过来,redis相关进程会占满cpu运行内存
处理的不好,就会阻塞。