validator: Add --rpc-threads argument (bp #14553) (#14567)

* Add --rpc-threads argument

(cherry picked from commit 11daaadc93)

# Conflicts:
#	Cargo.lock
#	validator/Cargo.toml

* rebase

Co-authored-by: Michael Vines <mvines@gmail.com>
This commit is contained in:
mergify[bot]
2021-01-14 00:09:22 +00:00
committed by GitHub
parent 6d67dc6ead
commit b1335041c8
6 changed files with 17 additions and 2 deletions

1
Cargo.lock generated
View File

@ -5036,6 +5036,7 @@ dependencies = [
"core_affinity",
"libc",
"log 0.4.8",
"num_cpus",
"rand 0.7.3",
"serde_json",
"signal-hook",

View File

@ -38,7 +38,6 @@ log = "0.4.8"
lru = "0.6.0"
miow = "0.2.2"
net2 = "0.2.37"
num_cpus = "1.13.0"
num-traits = "0.2"
rand = "0.7.0"
rand_chacha = "0.2.2"
@ -87,6 +86,7 @@ trees = "0.2.1"
[dev-dependencies]
matches = "0.1.6"
num_cpus = "1.13.0"
reqwest = { version = "0.10.8", default-features = false, features = ["blocking", "rustls-tls", "json"] }
serial_test = "0.4.0"
serial_test_derive = "0.4.0"

View File

@ -112,6 +112,7 @@ pub struct JsonRpcConfig {
pub enable_bigtable_ledger_upload: bool,
pub max_multiple_accounts: Option<usize>,
pub account_indexes: HashSet<AccountIndex>,
pub rpc_threads: usize,
}
#[derive(Clone)]

View File

@ -273,6 +273,7 @@ impl JsonRpcService {
) -> Self {
info!("rpc bound to {:?}", rpc_addr);
info!("rpc configuration: {:?}", config);
let rpc_threads = 1.max(config.rpc_threads);
let health = Arc::new(RpcHealth::new(
cluster_info.clone(),
@ -374,7 +375,7 @@ impl JsonRpcService {
io,
move |_req: &hyper::Request<hyper::Body>| request_processor.clone(),
)
.threads(num_cpus::get())
.threads(rpc_threads)
.cors(DomainsValidation::AllowOnly(vec![
AccessControlAllowOrigin::Any,
]))

View File

@ -14,6 +14,7 @@ chrono = { version = "0.4.11", features = ["serde"] }
console = "0.11.3"
core_affinity = "0.5.10"
log = "0.4.8"
num_cpus = "1.13.0"
rand = "0.7.0"
serde_json = "1.0.56"
solana-clap-utils = { path = "../clap-utils", version = "1.4.24" }

View File

@ -889,6 +889,7 @@ pub fn main() {
let default_rpc_send_transaction_leader_forward_count = ValidatorConfig::default()
.send_transaction_leader_forward_count
.to_string();
let default_rpc_threads = num_cpus::get().to_string();
let matches = App::new(crate_name!()).about(crate_description!())
.version(solana_version::version!())
@ -1340,6 +1341,15 @@ pub fn main() {
.validator(solana_net_utils::is_host)
.help("IP address to bind the RPC port [default: use --bind-address]"),
)
.arg(
Arg::with_name("rpc_threads")
.long("rpc-threads")
.value_name("NUMBER")
.validator(is_parsable::<usize>)
.takes_value(true)
.default_value(&default_rpc_threads)
.help("Number of threads to use for servicing RPC requests"),
)
.arg(
Arg::with_name("rpc_pubsub_enable_vote_subscription")
.long("rpc-pubsub-enable-vote-subscription")
@ -1606,6 +1616,7 @@ pub fn main() {
"health_check_slot_distance",
u64
),
rpc_threads: value_t_or_exit!(matches, "rpc_threads", usize),
account_indexes: account_indexes.clone(),
},
rpc_addrs: value_t!(matches, "rpc_port", u16).ok().map(|rpc_port| {