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

广州专业建设网站地下城做解封任务的网站

广州专业建设网站,地下城做解封任务的网站,网站死链怎么办,wordpress搬家出现404背景 开发小伙伴都知道线上服务挂掉#xff0c;基本都是因为cpu或者内存不足#xff0c;出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们带来不一样的服务挂掉。 还记得哔哩哔哩713事故中那场诡计多端的0吗#xff1f; 图片 对就是这个0#xff0c;和本次事… 背景 开发小伙伴都知道线上服务挂掉基本都是因为cpu或者内存不足出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们带来不一样的服务挂掉。 还记得哔哩哔哩713事故中那场诡计多端的0吗 图片 对就是这个0和本次事故没关系但深受启发。 问题排查 老规矩在集群环境中同一个服务几个节点无响应。如不及时解决会可能形成雪崩效应。 优先查看服务日志是否有报错礼貌习惯性查看服务cpu及内存情况。先复习下若服务无报错。cpu或内存出现异常按如下步骤排查。 常规排查 1、查看服务进程中线程情况 topnbsp;-Hnbsp;-pnbsp;pid 或 psnbsp;-mpnbsp;pidnbsp;-onbsp;THREAD,tid,time 2、查看系统异常线程16进制 printfnbsp;“%x\n”nbsp;nid 3、查看异常线程堆栈信息 jstacknbsp;pidnbsp;|nbsp;grepnbsp;number 查看占用最大内存对象前一百 jmapnbsp;-histonbsp;pid|headnbsp;-100 导出到文件 jstacknbsp;-lnbsp;PIDnbsp;nbsp;a.log 或dump信息使用工具Mat或JProfiler查看 jmapnbsp;-dump:live,formatb,file/dump.binnbsp;pid 经过上面一通手法操作足以解决此类常规报错了通常大多是原因各种循环递归、或数据库慢查询等。 Mat使用 在MAT中会有两种大小表示 Shallow Size表示对象自身占用的内存大小不包括它引用的对象。Retained size当前对象内存大小当前对象直接或间接引用的对象大小全部的总和简单理解就是当前对象被GC后总共能释放的内存大小。 Histogram视图 以Class Name为维度分别展示各个类的对象数量。它默认是以byte为单位的 图片 要显示让单位展示出来点击Window-Preferences选择最后一项点击Apply and Close 再重新打开Histogram视图就会生效了。 图片 Leak Suspects 报表很直观地展现了一个饼图图中颜色深的部分表示可能存在内存泄漏的嫌疑。 通过这个指标可以快速定位内存泄漏地方出现在哪个类方法里的哪行代码。 本次问题排查 1、 信息收集分析 因服务健康监测无响应cpu及内存情况正常直接查看堆栈信息看看线程都在干什么 jstacknbsp;-lnbsp;PIDnbsp;nbsp;a.log Jstack的输出中Java线程状态主要是以下几种 RUNNABLE 线程运行中或I/O等待BLOCKED 线程在等待monitor锁(synchronized关键字)TIMED_WAITING 线程在等待唤醒但设置了时限WAITING 线程在无限等待唤醒 发现都是WAITING线程。 http-nio-8888-exec-6666nbsp; #8833nbsp;daemonnbsp;prio5nbsp;os_prio0nbsp;tid0x00001f2f0016e100nbsp;nid0x667dnbsp;waitingnbsp;onnbsp;conditionnbsp;[0x00002f1de3c5200] java.lang.Thread.State:nbsp;WAITINGnbsp;(parking) atnbsp;sun.misc.Unsafe.park(Nativenbsp;Method) -nbsp;parkingnbsp;tonbsp; waitnbsp; fornbsp;nbsp;0x00000007156a29c8nbsp;(anbsp;java.util.concurrent.locks.AbstractQueuedSynchronizer $ConditionObject) atnbsp;java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) atnbsp;java.util.concurrent.locks.AbstractQueuedSynchronizer $ConditionObject.await(AbstractQueuedSynchronizer.java:2039) atnbsp;com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:1897) atnbsp;com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1458) atnbsp;com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1253) atnbsp;com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4619) atnbsp;com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680) atnbsp;com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4615) atnbsp;com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1231) atnbsp;com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1223) atnbsp;com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:90) atnbsp;com.baomidou.dynamic.datasource.ds.ItemDataSource.getConnection(ItemDataSource.java:56) atnbsp;com.baomidou.dynamic.datasource.ds.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:48) atnbsp;org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) atnbsp;org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) atnbsp;org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:82) atnbsp;org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:68) atnbsp;org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:336) atnbsp;org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84) atnbsp;org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) atnbsp;org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) atnbsp;org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) atnbsp;org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) atnbsp;com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:143) atnbsp;org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) atnbsp;com.sun.proxy. $Proxy571.query(Unknownnbsp;Source) 2、定位关键信息追踪源代码 nbsp;nbsp;atnbsp;java.util.concurrent.locks.AbstractQueuedSynchronizer $ConditionObject.await(AbstractQueuedSynchronizer.java:2039) nbsp;nbsp;atnbsp;com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:1897) DruidConnectionHoldernbsp;takeLast()nbsp;throwsnbsp;InterruptedException,nbsp;SQLExceptionnbsp;{ trynbsp;{ whilenbsp;(poolingCountnbsp;nbsp;0)nbsp;{ emptySignal();nbsp;//nbsp;sendnbsp;signalnbsp;tonbsp;CreateThreadnbsp;createnbsp;connection nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; ifnbsp;(failFastnbsp;nbsp;isFailContinuous())nbsp;{ nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;thrownbsp;newnbsp;DataSourceNotAvailableException(createError); nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;notEmptyWaitThreadCount; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; ifnbsp;(notEmptyWaitThreadCountnbsp;nbsp;notEmptyWaitThreadPeak)nbsp;{ nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;notEmptyWaitThreadPeaknbsp;nbsp;notEmptyWaitThreadCount; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;trynbsp;{ nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;//nbsp;数据库的连接都没有释放且被占用连接池中无可用连接导致请求被阻塞 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;notEmpty.await();nbsp;//nbsp;signalnbsp;bynbsp;recyclenbsp;ornbsp;creator nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}nbsp;finallynbsp;{ nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;notEmptyWaitThreadCount--; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;notEmptyWaitCount; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; ifnbsp;(! enable)nbsp;{ nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;connectErrorCountUpdater.incrementAndGet(this); nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;thrownbsp;newnbsp;DataSourceDisableException(); nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}nbsp;catchnbsp;(InterruptedExceptionnbsp;ie)nbsp;{ nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;notEmpty.signal();nbsp;//nbsp;propagatenbsp;tonbsp;non-interruptednbsp;thread nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;notEmptySignalCount; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;thrownbsp;ie; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;decrementPoolingCount(); nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;DruidConnectionHoldernbsp;lastnbsp;nbsp;connections[poolingCount]; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;connections[poolingCount]nbsp;nbsp;null; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; returnnbsp;last; } 结合日志报错定位到问题代码。因报错可用连接没有正常释放导致一直await卡死。 问题代码如下 trynbsp;{ nbsp;nbsp;SqlSessionnbsp;sqlSessionnbsp;nbsp;sqlSessionFactory.openSession(ExecutorType.BATCH); nbsp;nbsp;TestMappernbsp;mappernbsp;nbsp;sqlSession.getMapper(TestMapper.class); nbsp;nbsp;mapper.insetList(list); nbsp;nbsp;sqlSession.flushStatements(); }nbsp;catchnbsp;(Exceptionnbsp;e)nbsp;{ nbsp;nbsp;nbsp;e.printStackTrace(); } 问题复现 按照以上信息在多活环境复现。因线程被打满且都在等待导致监控检查无响应。 tomcat线程被打满 图片 tomcat默认参数 最大工作线程数默认200。 server.tomcat.max-threads200 最大连接数默认是10000 server.tomcat.max-connections10000 等待队列长度默认100。 server.tomcat.accept-count100 最小工作空闲线程数默认10。 server.tomcat.min-spare-threads100 Druid连接池的默认参数如下 图片 Druid连接池的配置参数如下 解决 1、Druid连接池的配置超时参数 spring:nbsp; nbsp;nbsp;redis: nbsp;nbsp;nbsp;nbsp;host:nbsp;localhost nbsp;nbsp;nbsp;nbsp;port:nbsp;6379 nbsp;nbsp;nbsp;nbsp;password:nbsp; nbsp;nbsp;datasource: nbsp;nbsp;nbsp;nbsp;druid: nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; stat-view-servlet: nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;enabled:nbsp; true nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;loginUsername:nbsp;admin nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;loginPassword:nbsp;123456 nbsp;nbsp;nbsp;nbsp;dynamic: nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;druid: nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;initial-size:nbsp;5 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;min-idle:nbsp;5 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;maxActive:nbsp;20 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;maxWait:nbsp;60000 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;timeBetweenEvictionRunsMillis:nbsp;60000 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;minEvictableIdleTimeMillis:nbsp;300000 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;validationQuery:nbsp;SELECTnbsp;1nbsp;FROMnbsp;DUAL nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;testWhileIdle:nbsp; true nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;testOnBorrow:nbsp; false nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;testOnReturn:nbsp; false nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;poolPreparedStatements:nbsp; true nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;maxPoolPreparedStatementPerConnectionSize:nbsp;20 nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;filters:nbsp; stat,slf4j,wall nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;connectionProperties:nbsp;druid.stat.mergeSql\ true;druid.stat.slowSqlMillis\5000 2、异常及时关闭连接 sqlSession.close(); 来源blog.csdn.net/zhangcongyi420/article/details/131139599 End
http://www.hkea.cn/news/14358445/

相关文章:

  • 最好的书籍设计网站大气的企业网站
  • 网站开发的岗位网站手机模板的特点
  • 如何做网站清风制作什么叫宣传型网站
  • 淘宝里面的网站怎么做的做网站 博客
  • 河北网站建设品牌大全wordpress 三大标签
  • 做海淘的网站花西子网络营销案例分析
  • 网站是用什么程序做的有什么公司要做推广的
  • 网站建设论文 网站建设论文手工制作小店铺
  • 淄博 网站制作我做的网站不知道网站怎么办
  • 网站设计网页的优缺点图片瀑布流网站模板
  • ktv支付订房网站模板简单的报价表模板
  • pop布局的网站wordpress中文安装
  • 网站建设详细合同范本宁德市住房和城乡建设局新网站
  • 黄冈网站推广策略产品设计工具
  • 广州网站建设网站制作万豪酒店线上营销推广
  • 移动网站建设生要女小程序开发用什么工具
  • 多语言网站源码什么是网站结构
  • 无锡做网站优化价格网站搭建好了怎么上到服务器
  • 做招聘网站的怎么让人注册简历曹县网站开发公司
  • 怎么做游戏试玩网站北京市住房与城乡建设部网站
  • 城乡建设网站职业查询中国最顶尖的服装设计公司
  • 网页设计网站总结报告怎么写中国网络购物市场研究报告
  • 做一个什么网站好中国有限公司官网
  • wordpress快站怎么样软文是什么
  • 做哪个网站的推广好网址大全免费网站
  • 一个备案号多个网站ps个人网站制作流程
  • 免费下载模板pptseo推广技术
  • 做机械的老板都看什么网站天津网站建设班
  • 网站策划图石家庄市工程建设造价管理站网站
  • 中国建设银行网站太慢了wordpress 标签别名 id