×

tomcat

Tomcat线程居高不下的原因(tomcat大量线程阻塞)

aruigr aruigr 发表于2024-06-20 浏览5926 评论0
前言 笔者在解决业务的问题中发现,如果Tomcat在并发延迟突变高后,很容易线程数量飙高,而且短时间是降不下去的,除非重启,但是不能线程飙高就重启吧,实际上是线程池的逻辑,然而Tomcat开放的配置是限制的。 1. Tomcat运行的线程配置 Tomcat运行过程一般都是在server.xml中配置catalina-exec-xxx和http-nio-8080-xxx 另外的配置   2. Tomcat线程飙高很久的原因 线程池的线程数量要超过core数量必须要正在

ribbon

ribbon服务列表和nacos服务列表不一致的问题(nacos和ribbon下线服务)

步虚声 步虚声 发表于2024-06-15 浏览5341 评论0
背景 在学习ribbon和nacos的时候,发现当手动把服务实例下线后,nacos的服务列表已更新,但是ribbon拉取的服务列表还未更新,为了解决这个问题,我们先来了解一下他们各自的服务更新机制 问题解析 首先大家先思考两个问题: 1,nacos是怎么拉取服务的? 2,ribbon是怎么拉取服务的? 在这里先明确一下: 这里的拉取服务实例是一个懒加载的过程,也就是说在第一次请求的时候才会去拉取服务实例 首先我们先来看下ribbon是怎么拉取服务实例的 //这里是Lo

后端

Java线程池ThreadPoolExecutor详解(一篇就够了)

nmgtjkjyxgs nmgtjkjyxgs 发表于2024-06-15 浏览10384 评论0
前言 创建一个新的线程可以通过继承Thread类或者实现Runnable接口来实现,这两种方式创建的线程在运行结束后会被虚拟机销毁,进行垃圾回收,如果线程数量过多,频繁的创建和销毁线程会浪费资源,降低效率。而线程池的引入就很好解决了上述问题,线程池可以更好的创建、维护、管理线程的生命周期,做到复用,提高资源的使用效率,也避免了开发人员滥用new关键字创建线程的不规范行为。 说明:阿里开发手册中明确指出,在实际生产中,线程资源必须通过线程池提供,不允许在应用中显式的创建线程。

golang

Go语言并发编程——原子操作(go语言并发编程实战)

依然 依然 发表于2024-05-31 浏览6002 评论0
一、原子操作 一个高并发的go程序在执行过程中,同一时刻只会有很少的Goroutine处于运行状态。Go语言的任务调度器为了公平起见,Goroutine会频繁的被换上和换下,它们不断的来回切换,从而达到并发的效果。 所以,一个Goroutine在执行某一个操作时很有可能会被中断,这就是非原子操作,也是并发不安全产生的原因。 原子操作就是在执行过程中是不会被中断的。在底层,这会由 CPU 提供芯片级别的支持,所以绝对有效。即使在拥有多 CPU 核心,或者多 CPU 的计算机系统中,