Wenjun Ruan
8 months ago
committed by
GitHub
31 changed files with 603 additions and 428 deletions
@ -0,0 +1,46 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.common.model; |
||||
|
||||
import org.apache.dolphinscheduler.common.enums.ServerStatus; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
import lombok.experimental.SuperBuilder; |
||||
|
||||
@Data |
||||
@SuperBuilder |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
public class BaseHeartBeat implements HeartBeat { |
||||
|
||||
protected int processId; |
||||
protected long startupTime; |
||||
protected long reportTime; |
||||
protected double jvmCpuUsage; |
||||
protected double cpuUsage; |
||||
protected double jvmMemoryUsage; |
||||
protected double memoryUsage; |
||||
protected double diskUsage; |
||||
protected ServerStatus serverStatus; |
||||
|
||||
protected String host; |
||||
protected int port; |
||||
|
||||
} |
@ -0,0 +1,164 @@
|
||||
# |
||||
# Licensed to the Apache Software Foundation (ASF) under one or more |
||||
# contributor license agreements. See the NOTICE file distributed with |
||||
# this work for additional information regarding copyright ownership. |
||||
# The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
# (the "License"); you may not use this file except in compliance with |
||||
# the License. You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
# |
||||
spring: |
||||
banner: |
||||
charset: UTF-8 |
||||
jackson: |
||||
time-zone: UTC |
||||
date-format: "yyyy-MM-dd HH:mm:ss" |
||||
cache: |
||||
# default enable cache, you can disable by `type: none` |
||||
type: none |
||||
cache-names: |
||||
- tenant |
||||
- user |
||||
- processDefinition |
||||
- processTaskRelation |
||||
- taskDefinition |
||||
caffeine: |
||||
spec: maximumSize=100,expireAfterWrite=300s,recordStats |
||||
datasource: |
||||
driver-class-name: org.postgresql.Driver |
||||
url: jdbc:postgresql://127.0.0.1:5432/dolphinscheduler |
||||
username: root |
||||
password: root |
||||
hikari: |
||||
connection-test-query: select 1 |
||||
minimum-idle: 5 |
||||
auto-commit: true |
||||
validation-timeout: 3000 |
||||
pool-name: DolphinScheduler |
||||
maximum-pool-size: 50 |
||||
connection-timeout: 30000 |
||||
idle-timeout: 600000 |
||||
leak-detection-threshold: 0 |
||||
initialization-fail-timeout: 1 |
||||
quartz: |
||||
job-store-type: jdbc |
||||
jdbc: |
||||
initialize-schema: never |
||||
properties: |
||||
org.quartz.threadPool.threadPriority: 5 |
||||
org.quartz.jobStore.isClustered: true |
||||
org.quartz.jobStore.class: org.springframework.scheduling.quartz.LocalDataSourceJobStore |
||||
org.quartz.scheduler.instanceId: AUTO |
||||
org.quartz.jobStore.tablePrefix: QRTZ_ |
||||
org.quartz.jobStore.acquireTriggersWithinLock: true |
||||
org.quartz.scheduler.instanceName: DolphinScheduler |
||||
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool |
||||
org.quartz.jobStore.useProperties: false |
||||
org.quartz.threadPool.makeThreadsDaemons: true |
||||
org.quartz.threadPool.threadCount: 25 |
||||
org.quartz.jobStore.misfireThreshold: 60000 |
||||
org.quartz.scheduler.batchTriggerAcquisitionMaxCount: 1 |
||||
org.quartz.scheduler.makeSchedulerThreadDaemon: true |
||||
org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate |
||||
org.quartz.jobStore.clusterCheckinInterval: 5000 |
||||
|
||||
# Mybatis-plus configuration, you don't need to change it |
||||
mybatis-plus: |
||||
mapper-locations: classpath:org/apache/dolphinscheduler/dao/mapper/*Mapper.xml |
||||
type-aliases-package: org.apache.dolphinscheduler.dao.entity |
||||
configuration: |
||||
cache-enabled: false |
||||
call-setters-on-nulls: true |
||||
map-underscore-to-camel-case: true |
||||
jdbc-type-for-null: NULL |
||||
global-config: |
||||
db-config: |
||||
id-type: auto |
||||
banner: false |
||||
|
||||
|
||||
registry: |
||||
type: zookeeper |
||||
zookeeper: |
||||
namespace: dolphinscheduler |
||||
connect-string: localhost:2181 |
||||
retry-policy: |
||||
base-sleep-time: 60ms |
||||
max-sleep: 300ms |
||||
max-retries: 5 |
||||
session-timeout: 30s |
||||
connection-timeout: 9s |
||||
block-until-connected: 600ms |
||||
digest: ~ |
||||
|
||||
master: |
||||
listen-port: 5678 |
||||
# master fetch command num |
||||
fetch-command-num: 10 |
||||
# master prepare execute thread number to limit handle commands in parallel |
||||
pre-exec-threads: 10 |
||||
# master execute thread number to limit process instances in parallel |
||||
exec-threads: 100 |
||||
# master dispatch task number per batch, if all the tasks dispatch failed in a batch, will sleep 1s. |
||||
dispatch-task-number: 30 |
||||
# master host selector to select a suitable worker, default value: LowerWeight. Optional values include random, round_robin, lower_weight |
||||
host-selector: lower_weight |
||||
# master heartbeat interval |
||||
max-heartbeat-interval: 10s |
||||
# master commit task retry times |
||||
task-commit-retry-times: 5 |
||||
# master commit task interval |
||||
task-commit-interval: 1s |
||||
state-wheel-interval: 5s |
||||
server-load-protection: |
||||
# If set true, will open master overload protection |
||||
enabled: true |
||||
# Master max system cpu usage, when the master's system cpu usage is smaller then this value, master server can execute workflow. |
||||
max-system-cpu-usage-percentage-thresholds: 0.77 |
||||
# Master max jvm cpu usage, when the master's jvm cpu usage is smaller then this value, master server can execute workflow. |
||||
max-jvm-cpu-usage-percentage-thresholds: 0.77 |
||||
# Master max System memory usage , when the master's system memory usage is smaller then this value, master server can execute workflow. |
||||
max-system-memory-usage-percentage-thresholds: 0.77 |
||||
# Master max disk usage , when the master's disk usage is smaller then this value, master server can execute workflow. |
||||
max-disk-usage-percentage-thresholds: 0.77 |
||||
# failover interval, the unit is minute |
||||
failover-interval: 10m |
||||
# kill yarn / k8s application when failover taskInstance, default true |
||||
kill-application-when-task-failover: true |
||||
registry-disconnect-strategy: |
||||
# The disconnect strategy: stop, waiting |
||||
strategy: waiting |
||||
# The max waiting time to reconnect to registry if you set the strategy to waiting |
||||
max-waiting-time: 100s |
||||
worker-group-refresh-interval: 10s |
||||
|
||||
server: |
||||
port: 5679 |
||||
|
||||
management: |
||||
endpoints: |
||||
web: |
||||
exposure: |
||||
include: health,metrics,prometheus |
||||
endpoint: |
||||
health: |
||||
enabled: true |
||||
show-details: always |
||||
health: |
||||
db: |
||||
enabled: true |
||||
defaults: |
||||
enabled: false |
||||
metrics: |
||||
tags: |
||||
application: ${spring.application.name} |
||||
|
||||
metrics: |
||||
enabled: true |
@ -0,0 +1,67 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.meter.metrics; |
||||
|
||||
import lombok.Data; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
@Slf4j |
||||
@Data |
||||
public class BaseServerLoadProtection implements ServerLoadProtection { |
||||
|
||||
protected boolean enabled = true; |
||||
|
||||
protected double maxSystemCpuUsagePercentageThresholds = 0.7; |
||||
|
||||
protected double maxJvmCpuUsagePercentageThresholds = 0.7; |
||||
|
||||
protected double maxSystemMemoryUsagePercentageThresholds = 0.7; |
||||
|
||||
protected double maxDiskUsagePercentageThresholds = 0.7; |
||||
|
||||
@Override |
||||
public boolean isOverload(SystemMetrics systemMetrics) { |
||||
if (!enabled) { |
||||
return false; |
||||
} |
||||
if (systemMetrics.getSystemCpuUsagePercentage() > maxSystemCpuUsagePercentageThresholds) { |
||||
log.info( |
||||
"OverLoad: the system cpu usage: {} is over then the maxSystemCpuUsagePercentageThresholds {}", |
||||
systemMetrics.getSystemCpuUsagePercentage(), maxSystemCpuUsagePercentageThresholds); |
||||
return true; |
||||
} |
||||
if (systemMetrics.getJvmCpuUsagePercentage() > maxJvmCpuUsagePercentageThresholds) { |
||||
log.info( |
||||
"OverLoad: the jvm cpu usage: {} is over then the maxJvmCpuUsagePercentageThresholds {}", |
||||
systemMetrics.getJvmCpuUsagePercentage(), maxJvmCpuUsagePercentageThresholds); |
||||
return true; |
||||
} |
||||
if (systemMetrics.getDiskUsedPercentage() > maxDiskUsagePercentageThresholds) { |
||||
log.info("OverLoad: the DiskUsedPercentage: {} is over then the maxDiskUsagePercentageThresholds {}", |
||||
systemMetrics.getDiskUsedPercentage(), maxDiskUsagePercentageThresholds); |
||||
return true; |
||||
} |
||||
if (systemMetrics.getSystemMemoryUsedPercentage() > maxSystemMemoryUsagePercentageThresholds) { |
||||
log.info( |
||||
"OverLoad: the SystemMemoryUsedPercentage: {} is over then the maxSystemMemoryUsagePercentageThresholds {}", |
||||
systemMetrics.getSystemMemoryUsedPercentage(), maxSystemMemoryUsagePercentageThresholds); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
} |
@ -0,0 +1,24 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.apache.dolphinscheduler.meter.metrics; |
||||
|
||||
public interface ServerLoadProtection { |
||||
|
||||
boolean isOverload(SystemMetrics systemMetrics); |
||||
|
||||
} |
Loading…
Reference in new issue