reactor线程阻塞引起故障

大致线程模型: jstack打印JVM堆栈,可以看到reactor线程阻塞了,导致它对应的前端连接无法使用。阻塞在了oracle驱动rollback动作,这里其实是因为oracle驱动为了保证串行请求响应而在底层加了锁,而这个通道被慢语句塞住了,所以reactor线程都塞了。 "$_NIOREACTOR-7-RW" prio=10 tid=0x00007f069856f000 nid=0xde1...
阅读(795) 评论(0)

ServletContainerInitializer初始化器

在web容器启动时为提供给第三方组件机会做一些初始化的工作,例如注册servlet或者filtes等,servlet规范中通过ServletContainerInitializer实现此功能。每个框架要使用ServletContainerInitializer就必须在对应的jar包的META-INF/services 目录创建一个名为javax.servlet.ServletContainerIni...
阅读(8192) 评论(7)

基于若引用的内存泄漏检测

在Java中,引用分为强引用、软引用、弱引用和虚引用四种。强引用,代码中普遍存在的形式,例如常见的普通类new出对象后的引用。GC不会回收强引用的对象。 软引用,软引用对象会在内存溢出异常之前进行回收,也就是说在内存富裕的情况下GC不回收软引用。它可通过SoftReference类实现。 弱引用,弱引用对象会在下一次GC时被回收,也就是说不管内存富不富裕,当GC时都会回收弱引用。它可通过WeakRe...
阅读(3026) 评论(0)

tomcat请求路由映射核心组件Mapper

Mapper组件的核心功能是提供请求路径的路由映射,根据某个请求路径通过计算得到相应的Servlet(Wrapper)。这节看下Mapper的实现细节,包括Host容器、Context容器、Wrapper容器等的映射关系以及映射算法。如果要将整个tomcat容器中所有的web项目以能够以Servlet级别组织起来,需要一个多层级的类似Map结构的存储空间。如上图,以Mapper作为映射的入口,按照容...
阅读(4436) 评论(0)

tomcat如何路由映射网址

对于web容器来说,根据请求客户端路径路由到对应的资源属于其核心功能,假设用户在自己电脑上使用浏览器输入网址http://www.test.com/test/index.jsp,报文通过互联网网络到达该主机服务器,服务器应将其转到test应用的index.jsp页面中进行处理,然后再返回。针对tomcat,为了更加详细说清楚这个过程,引入一张图, 客户端浏览器输入http://tomcat.a...
阅读(4632) 评论(2)

应用直接中断连接导致数据被锁(生产故障)

这是一个由应用重启连接直接而导致数据被锁的问题。 系统大致结构基本情况:整个架构为了统一管理db连接,共享连接。 应用通过loadbalance连接db访问层。 db访问层后端代理若干db。 应用到loadbalance以mysql协议通信。 db访问层到db以JDBC方式通信。 故障: 某些数据库中的表数据相当长一段时间被锁,导致应用某些场景失败。 故障分析:应用开启一个事务的set autoco...
阅读(1951) 评论(0)
    打赏作者

    赞作者(*^__^*)



    如果您觉得作者写的文章有帮助到您,您可以打赏作者一瓶汽水(*^__^*)

    作者

    笔名:seaboat 汪洋之舟

    github:https://github.com/sea-boat

    微信:



    公众号:

    个人资料
    • 访问:865717次
    • 积分:11999
    • 等级:
    • 排名:第1329名
    • 原创:284篇
    • 转载:5篇
    • 译文:1篇
    • 评论:316条
    博客专栏