IDEA 2021 CPU 超100% 问题解决
用了IDEA 2021之后cpu超过200,打开一个类文件就卡住一会,起初以为是语法检查的问题,把所有语法检查一个不留全关闭,还是没解决。
最终解决方式,配置IDEA 的JVM参数:
1234567891011121314151617181920212223242526272829303132333435#堆栈设置-Xms4096m-Xmx4096m-Xmn3072m-XX:MetaspaceSize=1024m-XX:MaxMetaspaceSize=1024m-XX:+AlwaysPreTouch-XX:InitialCodeCacheSize=1200m-XX:ReservedCodeCacheSize=1200m-XX:+UseCompressedOops-Dfile.encoding=UTF-8# 采用何种垃圾回收参数-XX:+UseConcMarkSweepGC-XX:ParallelGCThreads=4-XX:SoftRefLRUPolicyMSPerMB=50-ea# JIT 参数-XX:CICo ...
CMS 问题定位与排查
起因最近排查一个历史老问题,历史问题就是大家都知道,但是没人愿意处理。线上节点 16 和 32 G 内存频繁的出现GC,并且由于 GC 还导至两个问题,1.CPU使用率在GC时变高,2.业务出现异常。这个问题变得无法忍耐了,跟踪程序线程使用,CMS GC 线程CPU 使用在初始化时都 11-99% 之间,严重影响业务处理。通过 jstat 观察,FullGC 不多,但是 YoungGC 非常频繁,YoungGC 多不影响服务性能吗?也影响。计算一个服务GC的好坏,不是看 FullGC 多少,而是看整体服务的吞吐量。
12345678910111213 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT68096.0 68096.0 16840.1 0.0 545344.0 115481.1 6658496.0 4835834.6 63280.0 60712.9 708 ...
jetty 流只能读一次问题分析
简述服务端报了一个异常:java.lang.IllegalStateException: STREAMED,详细堆栈如下。
1234511:30:51.359 ERROR [qtp463355-1242] [API](GetServlet.java:77)java.lang.IllegalStateException: STREAMED at org.eclipse.jetty.server.Request.getReader(Request.java:1188) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
这个从堆栈上看是jetty的问题,看着是框架的问题,但是还是得分析分析。看了一个代码,是代码是同时使用了jetty的两个API,原是是不能同时使用下面这两个方法,就是在一次请求里,不能同时使用这两个:
request.getReader()
reque ...
netty 构建server和client 服务
前言编程学习的方法,我认为是以小见大,在理解一个东西之前一定要先会用,并用熟它,这样理解才会快。就跟理解自行车一样,不会骑,然后先开始研究,最终可能会研究明白,但是毕竟还是事倍功半。所以先构建一个可以使自己理解的项目,再一点一点学习原理是一种比较好的方式。
Server服务端构建netty的话,就是一个流程三件套,最基础的三个框架组件摆出来,然后在上面写代码,分别是:
Server 启动类
Initializer 实始化组件类
Handle 请求处理类
劳记这一个流程三件套,基本netty的开发,你已经入门了,就是这么回事。
启动类套路第一步,写一个启动类,这个是入口,netty服务的话,一般都是先启动服务端,再启动客户端。这个好理解,如果服务端都不提供服务,客户端还有必要连接吗。当然如果是要启动着玩,就另说。
1234567891011121314151617181920212223242526272829303132333435package com.liukai.netty.test02.server;import io.netty.bootstrap.ServerBoots ...
netty 构建一个简易服务
前言构建一个只有Server服务端的netty服务,不需要额外的编写client去访问,也就是说使用现在的软件去访问。最简单的就是使用浏览器去访问,浏览是HTTP协议,所以服务必须是一个支持HTTP协议的应用。
实现使用:IDEA + netty + gradle 构建一个简单的HTTP服务,用来学习netty。
主要角色netty 构建一个服务,需要三个角色参与
Server 运行服务
Initializer 组装组件
Handle 业秋处理
项目构建可以创建一个gradle的空项目,这下面的代码复制进到项目中。
build.gradle复制内容
12345678910111213141516171819202122232425262728293031323334//插件管理plugins { id 'java'}//座标group 'com.liukai.netty'version '1.0-SNAPSHOT'//源和目标编译版本sourceCompatibility = 1.8targetC ...
netty 简述
什么是nettyNetty是一个异步的基于事件驱动(Reactor)的网络框架。Netty是一个NIO客户服务器框架,它能够快速和容易地开发网络应用,如协议服务器和客户端。它大大简化了网络编程,如TCP和UDP套接字服务器。
为什么选择netty主要原因是 netty 简化了使用nio时对网络编程的复杂性,提供更多的抽象性和功能方便网络编程开发。
列举一个特点:1.Netty支持三种IO模型同时支持三种Reactor模式。
2.Netty支持很多应用层的协议,提供了很多decoder和encoder。
3.Netty能够解决TCP长连接所带来的缺陷(粘包、半包等)
4.Netty支持应用层的KeepAlive。
5.Netty规避了JAVA NIO中的很多BUG,性能更好。
使用 netty 能做什么1.实现节点间通信2.实现自己的协议 dubbo、rocketmq 等底层都使用 netty 实现自己的协议
Spring Gateway 静态路由
简述以代码 或 配置文件形式进行配置。RewritePath:路径匹配切割StripPrefix: 路径载取
参数说明
id: 路由IDuri: 目标地址,可以是服务,如果服务Spring推荐用全大写,实际调用大小写不敏感,都可以调通。predicates: 匹配路径,以浏览器请求的端口号后面的第一级路径为起始。filters: 过滤器,包含Spring Gateway 内置过滤器,可以自定义过滤器。
1.请求转发,转发到目标地址123456routes: # 跳转URL - id: 163_route uri: http://www.163.com/ predicates: - Path=/163
2.切路径1234567# oauth2 认证- id: OAUTH2 uri: lb://OAUTH-SERVER predicates: - Path=/oauth-server/** filters: - StripPrefix=1
参数说明
StripPrefix的意思是将路径切掉一级,这个例子中 oauth-serve ...
server和client模式的区别
这两个相反的,由jvm启动时自动选择。
-server 模式:初始空间大,默认启动并行 VM,启动慢,运行快-client 模式:初始空间小,默认启动串行 VM,启动快,运行慢
一般情况下 -server 模式多
64位系统只能使用 server 模式
1234java -versionjava version "11.0.2" 2019-01-15 LTSJava(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
32位了解即可
测试 java -D 命令 -D 后面传入的命令,会解析成 System 中的属性12345678910public static void main(String[] args) { //java -DtestJvm=test TestGetSystemProperties String test = Sys ...
java 修改JAVA_HOME无效问题
问题最近需要验一下JDK的版本兼容性,找了一台JDK11的机器,改了一上JAVA_HOME,然后source /etc/profile后,发现版本没有改过来!?查看了一下.bash_profile和.bashrc都没有配置,奇怪了。难道是/usr/bin中指定了?因为如果使用openJDK会从/usr/bin去指定java的路径,还是看一看还真是
再ll查看一下这个软链指向哪里
想暴力删一下,但是万一改坏了就不好,还是温柔一点,使用 update-alternatives 命令
修改使用 update-alternatives 命令修改
格式如下:
12345678910usage: alternatives --install <link> <name> <path> <priority> [--initscript <service>] [--family <family>] [--slave ...
spring cloud eureka 注册服务显示IP端口号
Spring cloud 显示 INSTANCE-ID 如果以IP + 端口号的形式显示,会更清析的定位每个服务所在的机器节点的状态。
依赖的 pom12345<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>2.1.0.RELEASE</version></dependency>
yml 相关配置1234567eureka: client: service-url: defaultZone: http://10.168.16.101:8761/eureka/ instance: instance-id: ${spring.cloud.client.ip-address}:${spring.application.instance_id:${serve ...