diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 134d5a4c01..de3b1334b3 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -92,6 +92,7 @@ var ( utils.CacheDatabaseFlag, utils.CacheGCFlag, utils.TrieCacheGenFlag, + utils.DatabaseHandles, utils.ListenPortFlag, utils.MaxPeersFlag, utils.MaxPendingPeersFlag, diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go index a674eca4f1..fd7563f16b 100644 --- a/cmd/geth/usage.go +++ b/cmd/geth/usage.go @@ -134,6 +134,7 @@ var AppHelpFlagGroups = []flagGroup{ utils.CacheDatabaseFlag, utils.CacheGCFlag, utils.TrieCacheGenFlag, + utils.DatabaseHandles, }, }, { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index f431621baf..022ead57bc 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -307,6 +307,11 @@ var ( Usage: "Number of trie node generations to keep in memory", Value: int(state.MaxTrieCacheGen), } + DatabaseHandles = cli.IntFlag{ + Name: "database-handles", + Usage: "Number of file handles to use for database io", + Value: makeDatabaseHandles(), + } // Miner settings MiningEnabledFlag = cli.BoolFlag{ Name: "mine", @@ -1136,7 +1141,8 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) { if ctx.GlobalIsSet(CacheFlag.Name) || ctx.GlobalIsSet(CacheDatabaseFlag.Name) { cfg.DatabaseCache = ctx.GlobalInt(CacheFlag.Name) * ctx.GlobalInt(CacheDatabaseFlag.Name) / 100 } - cfg.DatabaseHandles = makeDatabaseHandles() + + cfg.DatabaseHandles = ctx.GlobalInt(DatabaseHandles.Name) if gcmode := ctx.GlobalString(GCModeFlag.Name); gcmode != "full" && gcmode != "archive" { Fatalf("--%s must be either 'full' or 'archive'", GCModeFlag.Name)