当前位置: 首页 > news >正文

合肥营销型网站建设开发可以入侵的网站

合肥营销型网站建设开发,可以入侵的网站,国外购物网站赏析,大气的网站模板Redis交互速度很慢,达到几十到一百毫秒一次 问题描述: 执行top命令发现redis占用达到100% redis交互速度慢,一次要几十到一百毫秒一次 解决思路 查看redis数据量,比如我这里达到了30万 经过本地测试,redis交互的速…

Redis交互速度很慢,达到几十到一百毫秒一次

问题描述:

执行top命令发现redis占用达到100%
redis交互速度慢,一次要几十到一百毫秒一次

解决思路

查看redis数据量,比如我这里达到了30万
经过本地测试,redis交互的速度跟redis交互量成正比,也就是说redis没数据时交互在10ms以内,数据量大的话一次可能花费更久的时间

集群方案

我在本地虚拟机建立了3个主节点3个从节点的redis集群,经过压力测试单节点情况cpu占到30%;改为集群模式redis每个节点占用在10%以下

可以得出结论集群方案确实能降低单节点cpu压力大的问题

**速度测试:**我这测试里单节点速度要比集群方案快,数据量增加后依然是单节点速度比集群快,目前看到集群的优势仅仅是降低了单节点cpu的负载(当然这是在只考虑速度,不考虑容错的情况下)

并发问题

我的程序中开了多线程跟redis做压力测试交互,但是由于redis内部是单线程处理的,所以增加线程数量对速度没有提升,且太多线程数还可能造成时间片竞争;但是多个线程确实比单线程在单位时间内交互次数多一些,我猜测是利用上了程序内部的执行时间,但也没快很多,1.5倍左右?

虽然我的环境是多核心处理器,但是关于redis:
Redis本身是一个单线程的数据库服务器,它使用一个事件循环来处理所有的客户端请求和操作。这意味着在Redis服务器内部,所有的操作都是按顺序处理的,一个接一个地执行。

然而,Redis支持多个并发客户端连接。这些客户端连接可以同时发送请求给Redis服务器。虽然Redis在内部是单线程的,但它使用了非阻塞的I/O操作和事件驱动的模型来实现高并发。这意味着Redis可以同时处理多个客户端请求,而不会阻塞其他客户端。

当多个客户端同时连接到Redis时,每个客户端都有自己的线程或进程来处理Redis通信。这样,多个客户端可以并发地发送请求和接收响应,而不会相互干扰。

测试下经常报错:RedisSystemException: RedisException: Connection closed

org.springframework.data.redis.RedisSystemException: Redis exception; nested exception is io.lettuce.core.RedisException: Connection closedat org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:74)at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)at org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java:44)at org.springframework.data.redis.FallbackExceptionTranslationStrategy.translate(FallbackExceptionTranslationStrategy.java:42)at org.springframework.data.redis.connection.lettuce.LettuceConnection.convertLettuceAccessException(LettuceConnection.java:277)at org.springframework.data.redis.connection.lettuce.LettuceConnection.await(LettuceConnection.java:1085)at org.springframework.data.redis.connection.lettuce.LettuceConnection.lambda$doInvoke$4(LettuceConnection.java:938)at org.springframework.data.redis.connection.lettuce.LettuceInvoker$Synchronizer.invoke(LettuceInvoker.java:673)at org.springframework.data.redis.connection.lettuce.LettuceInvoker$DefaultSingleInvocationSpec.get(LettuceInvoker.java:589)at org.springframework.data.redis.connection.lettuce.LettuceKeyCommands.exists(LettuceKeyCommands.java:79)at org.springframework.data.redis.connection.DefaultedRedisConnection.exists(DefaultedRedisConnection.java:81)at org.springframework.data.redis.core.RedisTemplate.lambda$hasKey$7(RedisTemplate.java:782)at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:224)at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:191)at org.springframework.data.redis.core.RedisTemplate.hasKey(RedisTemplate.java:782)at com.bestdata.em.drs.util.RedisUtil.hasKey(RedisUtil.java:98)at com.bestdata.em.drs.receive.serivce.impl.HasMoreBusinessServiceImpl.insertFormulaValueToMongoDB(HasMoreBusinessServiceImpl.java:180)at com.bestdata.em.drs.receive.serivce.impl.HasMoreBusinessServiceImpl.moreBusinessOperations(HasMoreBusinessServiceImpl.java:113)at com.bestdata.em.drs.receive.serivce.FormulaDataProcessingService.sensorFormulaCalculation(FormulaDataProcessingService.java:264)at com.bestdata.em.drs.receive.serivce.FormulaDataProcessingService.run(FormulaDataProcessingService.java:167)at java.lang.Thread.run(Thread.java:750)
16:18:33.404 [FormulaThreadPoll-9] ERROR c.b.e.d.r.s.i.HasMoreBusinessServiceImpl - Unite Alarm Exception:Redis exception; nested exception is io.lettuce.core.RedisException: Connection closed

问题排查:

服务端和redis是否在同一网段?
是内网,没问题

Redis资源占用
执行top命令
Redis CPU占用一直高达50%~100%,3到5秒就跳一次(此时生产环境有其他程序和redis交互,但是没有特别大)
Redis数据量占用很高,且这是单点部署非集群模式
执行压力测试程序:Redis CPU占用一直高达100%

结论

看到redis的cpu占用100%我本以为是这个导致的RedisSystemException:Connection closed,但是后来反复测试发现报错原因不是这个,而是我在测试过程中强行kill进程,导致出现了连接关闭的报错(这是我在idea中停止运行程序后弹了一下这个异常后发现的)

再经过测试redis cpu占用100%确实会引发异常,但却是超时的问题:org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException:

提高Redis服务器资源配置确实可以降低单点压力;但是对速度的提升不明显,甚至经过本地压力测试还慢了

http://www.khdw.cn/news/26050.html

相关文章:

  • dtc建站服务淘宝联盟怎么推广
  • 免费网站源码html搜索引擎推广案例
  • 医院网站怎么做运营沈阳seo排名优化推广
  • 惠州专业做网站公司品牌策略包括哪些内容
  • 校园网网站建设实训报告长治seo
  • 上海网站推广优化公司软文推广广告公司
  • 中小型企业网站建设与管理创意营销策划方案
  • 中国建设执业资格注册中心网站深圳正规seo
  • 挖矿网站怎么免费建设杭州百度快照优化公司
  • 青岛网站制作公司交换友情链接的要求有
  • 涉县移动网站建设公司小网站搜什么关键词
  • 如何把网站放在根目录搜索引擎推广seo
  • 企业vi设计是什么意思啊宁波seo推广方式排名
  • 网站主页设计要点热门推广平台
  • 做网站包头推广方案怎么写模板
  • 深圳网站设计制作元竞价排名采用什么计费方式
  • ecs服务器 做网站百度热搜风云榜
  • 做网站常见程序sem是什么检测分析
  • 北京建设网站的公司免费发布信息
  • win7本机做网站上海app网络推广公司
  • 注册公司流程一览表seo日常工作内容
  • wordpress-moveseo网站seo
  • 邢台网站建设厂家网址大全名称
  • 云南网站建设天度旅游新闻热点
  • 包头做网站哪家好好123上网主页
  • 网站建设要不要学编码合肥网络推广网络运营
  • 福州公司网站建设_网站描述和关键词怎么写
  • 海尔官网 网站建设的目标广东省各城市疫情搜索高峰进度
  • 网站注册 英文磁力蜘蛛种子搜索
  • 网站做数据统计泽成seo网站排名