Eureka 配置核心参数
1、Eureka-Client 核心配置参数
该部分将 Eureka-Client 服务的核心参数,分为基本参数、定时任务参数、http相关参数列举,
列举项仅部分核心参数,可用于性能调优。
1.1 Eureka-Client 基本参数
序号(No) | 参数(Parameter) | 默认值(Default) | 说明(Description) |
---|---|---|---|
1 | eureka.client.proxy-host | null | ** 获取eureka server 的代理主机名** |
2 | eureka.client.proxy-password | null | 获取eureka server 的代理主机密码 |
3 | eureka.client.proxy-port | null | ** 获取eureka server 的代理主机端口** |
4 | eureka.client.proxy-user-name | null | 获取eureka server 的代理用户名 |
5 | eureka.client.should-enforce-registration-at-init | false | Eureka Client 在初始化阶段是否强行注册到注册中心 |
6 | eureka.client.should-unregister-on-shutdown | true | client在shutdown情况下,是否显示从注册中心注销 |
7 | eureka.instance.metadata-map | 指定应用实例的元数据信息 | |
8 | eureka.client.disable-delta | false | 指示eureka客户端是否禁用增量提取 |
9 | eureka.client.enabled | true | 用于指示 Eureka 客户端已启用的标志 |
10 | eureka.client.availability-zones | 告知 Client 有哪些 region 及 availability-zone,支持配置修改运行时生效 | |
11 | eureka.client.filter-only-up-instances | true | 是否过滤出 InstanceStatus 为 UP 实例 |
12 | eureka.client.region | us-east-1 | 指定该应用实例所在的 region ,AWS datacenters 适用 |
13 | eureka.client.register-with-eureka | true | 是否将该应用实例注册到 Eureka Server |
14 | eureka.client.prefer-same-zone-eureka | true | 是否优先使用与该应用实例处于相同 Zone 的 Eureka Server |
15 | eureka.client.on-demand-update-status-change | true | 是否将本地实例状态的更新通过 ApplicationInfoManager 实时触发同步(有请求流控限制) 到 Eureka Server |
16 | eureka.client.fetch-remote-regions-registry | 逗号分隔的区域列表,提取eureka注册表信息 | |
17 | eureka.instance.prefer-ip-address | false | 是否优先使用IP地址来代替 host name 作为实例的 hostName字段值 |
18 | eureka.instance.lease-expiration-duration-in-seconds | 90 | 指定 Eureka Client 间隔多久需要向 Eureka Server 发送心跳来告知 Eureka Server 该实例还存活着。 |
19 | eureka.client.serviceUrl.defaultZone | 可用区域映射到与eureka服务器通信的完全限定URL列表。每个值可以是单个URL或逗号分隔的备用位置列表。(http://${eureka.instance.hostname}: ${server.port}/eureka/) |
1.2 Eureka-Client 定时任务参数
序号(No) | 参数(Parameter) | 默认值(Default) | 说明(Description) |
---|---|---|---|
1 | eureka.client.cache-refresh-executor-thread-pool-size | 2 | 刷新缓存的 CacheRefreshThread 的线程池大小 |
2 | eureka.client.cache-refresh-executor-exponential-back-off-bound | 10 | 当调度任务执行超时时,下次调度的延迟时间 |
3 | eureka.client.heartbeat-executor-thread-pool-size | 2 | 心跳线程 HeartbeatThread 的线程池大小 |
4 | eureka.client.heartbeat-executor-exponential-back-off-bound | 10 | 调度任务执行超时时,下次调度的延迟时间 |
5 | eureka.client.registry-fetch-interval-seconds | 30 | CacheRefreshThread 线程的调度频率 |
6 | eureka.client.eureka-service-url-poll-interval-seconds | 300 | AsyncResolver.updateTask 刷新 Eureka Server 地址的时间间隔 |
7 | eureka.client.initial-instance-info-replication-interval-seconds | 40 | InstanceInfoReplicator 将实例信息变更同步到 Eureka Server 的初始延时时间 |
8 | eureka.client.instance-info-replication-interval-seconds | 30 | InstanceInfoReplicator 将实例信息变更同步到 Eureka Server 的时间间隔 |
9 | eureka.instance.lease-renewal-interval-in-seconds | 30 | Eureka Client 向 Eureka Server 发送心跳的时间间隔 |
InstanceInfoReplicator 是个任务类,负责将自身的信息周期性的上报到Eureka Server。且,在周期性任务、服务状态变化(onDemandUpdate被调用)两个场景触发上报。InstanceInfoReplicator 在应用信息上报到 Eureka Server时发挥了重要的作用,业务逻辑可以放心的提交上报请求,并发、频率超限等情况都被 InstanceInfoReplicator 处理好了.
InstanceInfoReplicator 详细参考博文: https://blog.youkuaiyun.com/boling_cavalry/article/details/82909130
1.3 Eureka-Client 的 Http 相关参数
Eureka-Client 底层 httpClient 与 Eureka-Server 通信,提供的 http 相关参数如下:
序号(No) | 参数(Parameter) | 默认值(Default) | 说明(Description) |
---|---|---|---|
1 | eureka.client.eureka-server-connect-timeout-seconds | 5 | 连接超时时间 |
2 | eureka.client.eureka-server-read-timeout-seconds | 8 | 读超时时间 |
3 | eureka.client.eureka-server-total-connections | 200 | 连接池最大活动连接数(‘MaxTotal’) |
4 | eureka.client.eureka-server-total-connections-per-host | 50 | 每个host能使用的最大连接数(‘DefaultMax-PerRoute’) |
5 | eureka.client.eureka-connection-idle-timeout-seconds | 30 | 连接池中连接的空闲时间(‘connectionIdleTimeout’) |
2、Eureka-Server 配置核心参数
该部分将 Eureka-Server 服务的核心参数,分为基本参数、Response Cache 参数、
peer 相关参数、http相关参数列举,列举项仅部分核心参数,可用于性能调优。
2.1 Eureka-Server 基本参数
序号(No) | 参数(Parameter) | 默认值(Default) | 说明(Description) |
---|---|---|---|
1 | eureka.server.enable-self-preservation | true | 是否开启自我保护模式 |
2 | eureka.server.renewal-percent-threshold | 0.85 | 指定每分钟需要收到的续约次数的阀值 |
3 | eureka.instance.registry.expected-number-of-renews-per-min | 1 | 指定每分钟需要收到的续约次数值,该值实际在其中被写死为 count*2,另外也会被更新 |
4 | eureka.server.renewal-threshold-update-interval-ms | 15分钟 | 指定 updateRenewalThreshold 定时任务的调度频率。来动态更新 expectedNumber OfRenewsPerMin 及number OfRenewsPerMinThreshold值 |
5 | eureka.server.eviction-interval-timer-in-ms | 60*1000 | 指定EvictionTask 定时任务的调度频率,用于剔除过期的实例 |
2.2 Eureka-Server 的 Response Cache 参数
Eureka Server 为了提升自身 Rest Api 接口的性能,提供了以下两个缓存:
- 基于 ConcurrentMap 的 readOnlyCacheMap.
- 基于Guava Cache 的 readWriteCacheMap.
以上两个缓存相关配置参数如下:
序号(No) | 参数(Parameter) | 默认值(Default) | 说明(Description) |
---|---|---|---|
1 | eureka.server.use-read-only-response-cache | true | 是否使用只读的 response-cache |
2 | eureka.server.response-cache-update-interval-ms | 30*1000 | 设置 CacheUpdateTask 的调度时间间隔,用于从 readWriteCacheMap 更新数据到 readOnlyCacheMap 。仅在eureka.server.use-read-only-response-cache=true 才生效 |
3 | eureka.server.response-cache-auto-expiration-in-seconds | 180 | 设置 readWriteCacheMap 的 expireAfterWrite 参数,指定写入多长时间后过期 |
2.3 Eureka-Server 的 peer 相关参数
序号(No) | 参数(Parameter) | 默认值(Default) | 说明(Description) |
---|---|---|---|
1 | eureka.server.peer-eureka-nodes-update-interval-ms | 10分钟 | 指定 peerUpdateTask 调度的时间间隔。用于从配置文件刷新 peerEurekaNodes 节点的配置信息(‘eureka.client.serviceUrl相关zone的配置’) |
2 | eureka.server.peer-eureka-status-refresh-time-interval-ms | 30*1000 | 指定更新 peer nodes 状态信息的时间间隔(‘目前没看到代码中有使用’) |
2.4 Eureka-Server 的 Http 相关参数
序号(No) | 参数(Parameter) | 默认值(Default) | 说明(Description) |
---|---|---|---|
1 | eureka.server.peer-node-connect-timeout-ms | 200 | 连接超时时间 |
2 | eureka.server.peer-node-read-timeout-ms | 200 | 读超时时间 |
3 | eureka.server.peer-node-total-connections | 1000 | 连接池最大活动连接数(‘MaxTotal’) |
4 | eureka.server.peer-node-total-connections-per-host | 500 | 每个host能使用的最大连接数(‘DefaultMaxPerRoute’) |
5 | eureka.server.peer-node-connection-idle-timeout-seconds | 30 | 连接池中连接的空闲时间(‘connectionIdleTimeout’) |
.