blob: 1faf9a8d89f47c6b88eb5ddc3451f9f3be18b948 [file] [log] [blame]
/*
* 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 features
import (
"github.com/apache/dubbo-kubernetes/pkg/env"
"runtime"
"time"
)
var (
MaxConcurrentStreams = env.Register(
"DUBBO_GPRC_MAXSTREAMS",
100000,
"Sets the maximum number of concurrent grpc streams.",
).Get()
// MaxRecvMsgSize The max receive buffer size of gRPC received channel of Pilot in bytes.
MaxRecvMsgSize = env.Register(
"DUBBO_GPRC_MAXRECVMSGSIZE",
4*1024*1024,
"Sets the max receive buffer size of gRPC stream in bytes.",
).Get()
RequestLimit = func() float64 {
v := env.Register(
"SAIL_MAX_REQUESTS_PER_SECOND",
0.0,
"Limits the number of incoming XDS requests per second. On larger machines this can be increased to handle more proxies concurrently. "+
"If set to 0 or unset, the max will be automatically determined based on the machine size",
).Get()
if v > 0 {
return v
}
procs := runtime.GOMAXPROCS(0)
// Heuristic to scale with cores. We end up with...
// 1: 20
// 2: 25
// 4: 35
// 32: 100
return min(float64(15+5*procs), 100.0)
}()
DebounceAfter = env.Register(
"SAIL_DEBOUNCE_AFTER",
100*time.Millisecond,
"The delay added to config/registry events for debouncing. This will delay the push by "+
"at least this interval. If no change is detected within this period, the push will happen, "+
" otherwise we'll keep delaying until things settle, up to a max of PILOT_DEBOUNCE_MAX.",
).Get()
DebounceMax = env.Register(
"SAIL_DEBOUNCE_MAX",
10*time.Second,
"The maximum amount of time to wait for events while debouncing. If events keep showing up with no breaks "+
"for this time, we'll trigger a push.",
).Get()
EnableEDSDebounce = env.Register(
"SAIL_ENABLE_EDS_DEBOUNCE",
true,
"If enabled, Sail will include EDS pushes in the push debouncing, configured by PILOT_DEBOUNCE_AFTER and PILOT_DEBOUNCE_MAX."+
" EDS pushes may be delayed, but there will be fewer pushes. By default this is enabled",
).Get()
PushThrottle = func() int {
v := env.Register(
"PILOT_PUSH_THROTTLE",
0,
"Limits the number of concurrent pushes allowed. On larger machines this can be increased for faster pushes. "+
"If set to 0 or unset, the max will be automatically determined based on the machine size",
).Get()
if v > 0 {
return v
}
procs := runtime.GOMAXPROCS(0)
// Heuristic to scale with cores. We end up with...
// 1: 20
// 2: 25
// 4: 35
// 32: 100
return min(15+5*procs, 100)
}()
)