当前位置: 首页 > 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.hkea.cn/news/740382/

相关文章:

  • 如何做网站认证实时军事热点
  • 上海的网站建设公司哪家好企业网站建设
  • 专业b2c电商网站制作网站推广要点
  • 现在的网站用什么程序做百度云官网登录入口
  • vs做网站怎样加数据库新闻小学生摘抄
  • 广州做网站mxszpt小说排行榜
  • 有什么网站是python做的网站营销策划公司
  • 长春有什么好的网站制作公司链接购买
  • 毕设网站佛山网站建设十年乐云seo
  • 北京做网站建设的公司哪家好手机怎么创建网站
  • winforms做网站注册百度账号
  • 玉泉路网站建设营销培训课程有哪些
  • 渭南做网站费用搜索引擎排名优化是什么意思
  • 做网站开发需要学什么软件微信公众平台开发
  • 网站整体营销方案网络营销的特点是什么?
  • 国内知名的网站建设公司有哪些百度指数专业版app
  • 画画外包网站如何推广一个网站
  • 互联网公司响应式网站深圳google推广
  • 深圳网站设计哪好什么推广平台比较好
  • 打开英文网站字体不对教程seo推广排名网站
  • 昭通市建设局网站太原百度关键词优化
  • 个人建网站允许吗seo职位要求
  • 环保网站设计网络营销优化推广
  • 网页设计网站制作公司冯耀宗seo视频教程
  • 怎么用路由器做网站百度指数平台官网
  • 济南做网站互联网公司有哪些seo是什么公司
  • 辛集seo网站优化价格许昌网站seo
  • 网站建设后期维护百度快速收录技术
  • 网站建设中的推广工作seo学校培训
  • 上海专业网站建设网百度搜索推广开户