适用版本:
spring-boot: 1.4.x.RELEASE
spring-cloud:Camden.SR3
Hystrix: 1.5.6
spring-boot-tomcat 优化参数:
主要只有2个,最大和最小worker线程:
server.tomcat.max-threads=128 # Maximum amount of worker threads.
server.tomcat.min-spare-threads=64 # Minimum amount of worker threads.
spring-boot-undertow 优化参数:
ioThreads
设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接,默认取CPU核心数量,最小值为2。
Math.max(Runtime.getRuntime().availableProcessors(), 2);
spring-boot 参数: server.undertow.io-threads=
worker-threads
阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载,默认值为io-threads*8。
spring-boot 参数: server.undertow.worker-threads=
buffer
buffer-size:
每块buffer的空间大小,越小的空间被利用越充分。
buffers-per-region:
每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region。
directBuffers
是否分配的直接内存。
获取JVM最大可用内存 maxMemory=Runtime.getRuntime().maxMemory();
maxMemory<64M,不开启directBuffers, bufferSize = 512,buffersPerRegion = 10;
64<=maxMemory<128M,开启directBuffers, bufferSize = 1024 bytes,buffersPerRegion = 10;
maxMemory>128M,开启directBuffers, bufferSize = 16*1024 bytes,buffersPerRegion = 20;
spring-boot 参数:
# 最大可用内存<64M,不开启
server.undertow.buffer-size= # Size of each buffer in bytes.
server.undertow.buffers-per-region= # Number of buffer per region.
server.undertow.direct-buffers= # Allocate buffers outside the Java heap.
//默认值:cpu数量,最小为2
server.undertow.io-threads= # Number of I/O threads to create for the worker.
//默认值:io-threads*8
server.undertow.worker-threads= # Number of worker threads.
zuul 内置参数
zuul.host.maxTotalConnections
适用于ApacheHttpClient,如果是okhttp无效。每个服务的http客户端连接池最大连接,默认是200.
zuul.host.maxPerRouteConnections
适用于ApacheHttpClient,如果是okhttp无效。每个route可用的最大连接数,默认值是20。
zuul.semaphore.max-semaphores
Hystrix最大的并发请求 execution.isolation.semaphore.maxConcurrentRequests
,这个值并非 TPS
、 QPS
、 RPS
等都是相对值,指的是1秒时间窗口内的事务/查询/请求, semaphore.maxConcurrentRequests
是一个绝对值,无时间窗口,相当于亚毫秒级的。当请求达到或超过该设置值后,其其余就会被拒绝。默认值是100。参考: Hystrix semaphore和thread隔离策略的区别及配置参考
这个参数本来直接可以通过Hystrix的命名规则来设置,但被zuul重新设计了,使得在zuul中semaphores的最大并发请求有4个方法的参数可以设置,如果4个参数都存在优先级(1~4)由高到低:
- [优先级1]zuul.eureka.api.semaphore.maxSemaphores
- [优先级2]zuul.semaphore.max-semaphores
- [优先级3]hystrix.command.api.execution.isolation.semaphore.maxConcurrentRequests
- [优先级4]hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests
需要注意的是:在Camden.SR3版本的zuul中 hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests
设置不会起作用,这是因为在 org.springframework.cloud.netflix.zuul.filters.ZuulProperties.HystrixSemaphore.maxSemaphores=100
设置了默认值100,因此 zuul.semaphore.max-semaphores
的优先级高于 hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests
。
zuul.eureka.[commandKey].semaphore.maxSemaphores:
其中commandKey为
参考设置参数:
#
zuul.host.maxTotalConnections: 200
zuul.host.maxPerRouteConnections: 10
#zuul.semaphore.max-semaphores: 128
# 建议使用这种方式来设置,可以给每个不同的后端微服务设置不同的信号量
zuul.eureka.[service id].semaphore.maxSemaphores: 128
其他Hystrix参数:
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
用来设置thread和semaphore两种隔离策略的超时时间,默认值是1000。
- 建议设置这个参数,在Hystrix 1.4.0之前,semaphore-isolated隔离策略是不能超时的,从1.4.0开始semaphore-isolated也支持超时时间了。
- 建议通过CommandKey设置不同微服务的超时时间,对于zuul而言,CommandKey就是service id:
hystrix.command.[CommandKey].execution.isolation.thread.timeoutInMilliseconds
ribbon参数
ribbon:
# # Max number of next servers to retry (excluding the first server)
# MaxAutoRetries: 1
# # Whether all operations can be retried for this client
# MaxAutoRetriesNextServer: 1
# # Interval to refresh the server list from the source
# OkToRetryOnAllOperations: true
# # Interval to refresh the server list from the source
# ServerListRefreshInterval: 2000
# # Connect timeout used by Apache HttpClient
ConnectTimeout: 3000
# # Read timeout used by Apache HttpClient
ReadTimeout: 3000
主要是 ConnectTimeout
和 ReadTimeout
2个参数,最终会设置到http Client中。
http://www.tuicool.com/articles/aMRnIfr
相关推荐
在微服务架构中,Spring Cloud提供了一整套解决方案,包括服务发现(Eureka)、配置管理(Config Server)、API网关(Zuul或Gateway)、负载均衡(Ribbon)和服务注册等,这些组件协同工作,构建出高度可扩展和灵活...
Spring Cloud集成Zuul Spring Cloud集成Feign Spring Cloud集成Hystrix Spring Cloud Config Spring Cloud Sleuth https://spring.io/projects/spring-cloud-sleuth#overview 非Spring Boot Web项目 注册节点到...
- JVM参数调优:设置JVM初始化堆大小和最大堆大小,推荐将最大堆大小设置为可用内存的80%。例如,在catalina.bat文件中可以设置JAVA_OPTS参数,如'-Xms256m -Xmx512m'。 - 禁用DNS查询:关闭DNS查询可以减少服务器的...
其次,JVM(Java虚拟机)是Java程序运行的平台,深入理解JVM内存模型(如堆、栈、方法区、元空间等),垃圾收集机制(如新生代、老年代、CMS、G1等),以及性能优化策略(如JVM参数调优)是面试中的热门话题。...
- 熟悉JVM参数调优、性能检测工具,如JMeter,用于提升系统性能和稳定性。 5. **数据库与NoSQL**: - 熟练使用Oracle、MySQL、SQL Server等关系型数据库,以及Redis、MongoDB等非关系型数据库,适应不同的数据...
- `-Xms<size>` 和 `-Xmx<size>` 参数用于设置JVM的初始堆大小和最大堆大小。 - 设置`-Xms256m -Xmx512m`表示JVM的最小内存为256MB,最大内存为512MB。 - **DNS解析配置**: - 在Tomcat中可以通过设置`...
- **性能优化**:JVM参数调优、类加载机制、字符串常量池等。 4. **设计模式** - **常见设计模式**:单例、工厂、观察者、装饰器、代理、适配器等23种设计模式的应用场景和实现方式。 5. **数据库相关** - SQL...
这个部分可能涉及内存管理(堆、栈、方法区、本地方法栈等)、类加载机制、垃圾收集算法以及性能优化技巧,如JVM参数调优。 2. **Java并发编程**(34、JUC精讲.pdf):Java并发库(Java Util Concurrency, JUC)...
例如,使用服务注册中心如Eureka或Consul进行服务发现,配合Zuul或Spring Cloud Gateway实现智能路由和负载均衡,以及Hystrix或Sentinel提供容错机制。 在RPC调用过程中,一般包括以下步骤: 1. 客户端生成调用信息...
- SpringCloud包括Eureka(服务注册与发现)、Ribbon(客户端负载均衡器)、Hystrix(断路器)、Zuul(API Gateway)和Spring Cloud Config(配置中心)等核心组件。 理解并熟练掌握这些知识点,对于在IT行业的...
5. **JVM**:Java虚拟机的内存模型、垃圾收集算法(如新生代、老年代、CMS、G1)以及调优技巧(如参数设置)是面试的热门话题。理解类加载机制和运行时数据区能帮助解决性能问题。 6. **微服务**:微服务架构涉及...
- 调优工具:使用JConsole、VisualVM等工具进行性能监控和调优。 3. **Spring框架** - IoC(控制反转)与DI(依赖注入):理解IoC容器的核心作用,以及依赖注入的实现方式。 - AOP(面向切面编程):掌握切面、...
- **Java代码性能调优**:掌握基本的Java代码调优技巧,比如使用StringBuilder代替String拼接、避免不必要的对象创建等。 ### 版本特性 #### Spring 5新特性 - **响应式编程模型**:了解Spring 5引入的WebFlux和...
4. **监控和调优**:Hystrix提供了丰富的监控界面(Hystrix Dashboard),可以通过HystrixMetricsStreamServlet暴露监控数据,结合Turbine聚合多个服务实例的指标,实时查看服务的健康状况和熔断情况,以便进行调优...
- 调优:JVM参数调整,如-Xms, -Xmx, -XX:NewRatio等。 2. **多线程与并发**: - 线程状态:新建、就绪、运行、阻塞和死亡。 - 同步机制:synchronized关键字、Lock接口、ReentrantLock等。 - 死锁、活锁与饥饿...
- 调优参数:如 `-XX:+UseG1GC` 设置垃圾收集器,或者 `-XX:NewRatio` 控制年轻代和老年代的比例。 3. **MySQL**:作为常用的关系型数据库,面试中可能问到: - SQL优化:索引的创建与使用,避免全表扫描,合理...
4. **JVM调优**:通过JMX、JConsole或VisualVM监控和调整JVM参数。 **MySQL** MySQL是一款常用的开源关系型数据库管理系统,面试中常涉及: 1. **SQL语法**:DML(增删改查)、DDL(定义表结构)、DCL(权限管理)...
3. 性能调优:通过调整配置参数,提升服务的响应速度和并发处理能力。 4. 测试策略:集成测试、单元测试和端到端测试的实践,确保代码质量。 通过学习和实践这些知识点,开发者可以熟练掌握SpringCloud2020,构建出...
- **JVM优化**:JVM调优参数的理解、GC日志分析、性能监控工具(VisualVM)的使用。 3. **并发编程** - **并发容器**:ConcurrentHashMap、CopyOnWriteArrayList、LinkedBlockingQueue等并发容器的原理与使用。 ...
- 调优参数:学习如何设置JVM参数以优化应用程序性能。 - 类加载机制:双亲委派模型,类加载器的关系,以及类加载的时机。 5. **设计模式** - 单例模式、工厂模式、装饰器模式、代理模式等23种设计模式的应用与...