p4 configure

Set, view, and manage server configuration variables.

Syntax

p4 [g-opts] configure set [--comment=comment] [serverid#]variable=value
p4 [g-opts] configure unset [--comment=comment] [serverid#]variable
p4 [g-opts] configure show [allservers | serverid | variable]
p4 [g-opts] configure history [allservers | serverid | variable]
p4 configure history [--iteration=N] --comment=comment variable
p4 configure help

Syntax conventions

Description

Note

Although we recommend the syntax above, which uses serverid instead of P4NAME, the following syntax is still supported.

p4 [g-opts] configure set [P4NAME#]variable=value
p4 [g-opts] configure unset [P4NAME#]variable
p4 [g-opts] configure show [allservers | P4NAME | variable]
p4 [g-opts] configure history [allservers | P4NAME | variable]

Configuration variables are used to control and customize the behavior of the Helix Core service. A configurable setting might affect the client, the server, or a proxy.

Tip

An alternative is using p4 server, which conveniently allows some configuration in the server spec. See the p4 server topic on the DistributedConfig: field.

Important

The configuration variables are described both in this Reference and at the command line:

This Reference Command-line

See Configurables - alphabetical list

(indicates which ones require stopping the server.)

p4 help configurables
See Environment and registry variables p4 help environment
Tip

The super user can use p4 [g-opts] configure history [allservers | P4NAME | variable] to display the history of configurables, which are recorded by the 2019.2 server onwards. See the Options.

Precedence

The following table shows how the value of a configurable or environment variable is set, where 1 overrides 2, 2 overrides 3, and 3 overrides 4:

Precedence

How the value is set

Persistent configuration?
1

Command line "-v" options that are passed at server startup. For example:

$ p4d -v net.keepalive.idle=2700
No, but the option can be supplied each time the server is started,
2

Using the p4 configure set command to set the specified configurable or enviroment variable for a named server or for any server. A configurable set for a named server overrides on that particular server a configurable set for any server. See Viewing the values of configuration variables on all servers.

Yes
3

Using environment variables.

  • For Windows, use p4 set -S Perforce, such as
    p4 set -S Perforce P4DEBUG="net.keepalive.idle=2700" and the value will persist
  • On Unix, use the export command, which does not persist
Note

Certain server-related configurables are read-only. For example, the p4 configure or p4 configure set commands cannot change the value of the P4ROOT or P4JOURNAL environment variables.

Yes only for Windows
4

Using default values (no action required).

Yes
Tip

You can use K and M to represent large numbers. For example, 10M is the default value for the dm.shelve.maxfiles configurable.

Viewing the values of configuration variables on one server

To display the configuration state of the current server, a named server, or any configurable, including a Helix Core environment variable, use

p4 configure show

Each configurable is displayed along with its value, where the entry in the parentheses ( ) indicates how the value was set:

If the output line is ... the value was set by ...
P4PORT=20192 (-p) p4d -p
monitor=2 (-v) p4d -v
net.parallel.max: 10 (configure) p4 configure
serverid=commit (serverid) p4 serverid

Note that monitor is set to 2. To find out whether a specific configurable variable has been set in more than one way, specify that configurable variable:

p4 configure show monitor

which might output:

monitor=2 (-v)
monitor=10 (configure)

to indicate that p4d -v set monitor to 2, and p4 configure set monitor to 10. Because p4d has precedence over p4 configure, the output of p4 configure show indicates that monitor is set to 2.

Viewing the values of configuration variables on all servers

To display the configuration across all servers, use

p4 configure show allservers

The output might be similar to:

any: lbr.autocompress = 1
any: submit.allowbgtransfer = 1
paris-edge: P4LOG = /home/perforce/servers/edge1/log
headquarters-commit: P4LOG = /home/perforce/servers/commit-hq/log

where any means a configurable or environment variable defined on the commit server that is used by all connected servers unless specifically overridden in a named server's configuration. See Precedence.

Unsetting a value

To remove a custom setting of a configurable, use the p4 configure unset command. For example, to revert net.parallel.shelve.threads to its default value of unset (0), the command would be:

p4 configure unset net.parallel.shelve.threads

Tip

See "Recommended settings to configurables for security" in the Securing the server chapter of Helix Core Server Administrator Guide.

Stopping the server for some configurables

Changes to most configurables take effect immediately. For example,

Changes to P4AUTH, P4PORT, the startup.N configurables used in replicated environments, net.tcpsize, and net.backlog require a restart. To restart the server, use p4 admin restart.

For certain configurables, such as ssl.tls.version.min:

After you change the value of this configurable, you must explicitly "stop" the server.

Note

p4 admin restart is not sufficient.

For UNIX, see Stopping the Perforce Service and Starting the Perforce Service.

For Windows, see Starting and stopping the Helix Server.

Setting configurables in multi-server environments

Servers can be identified by name. In replicated and multi-server environments, a master can control the settings of multiple replicas by specifying the server name as part of the configurable. For example, the following command sets the value of the serviceUser configurable for an edge server (tokyo_edge). The command is executed on the commit server.

$ p4 configure set tokyo_edge#serviceUser=svc_tokyo_edge

See Deployment architecture in the Helix Core Server Administrator Guide.

Accessing configurables when the server is down

If the Helix Server is not running or you cannot access the server, you can use the p4d command to list, set, and unset server configurables:

  • To list all server configuration variables, use the -cshow option. For example:

    $ p4d -r $P4ROOT -cshow
  • To set or unset values, use -cset or -cunset. For example:

    $ p4d -r $P4ROOT "-cset myServer#auth.ldap.timeout=30"
    $ p4d -r $P4ROOT "-cunset myServer#db.replication"

For more information, see the Support Knowledgebase article, "Accessing Server Configuration Variables".

Options

set variable=value

Sets the named variable to the provided value. For a list of configuration variables, see the Configurables - alphabetical list in this Reference or run p4 help configurables at the command line.

unset variable

Unsets the named configuration variable.

show

Displays the current configuration of this server, that is, the server currently specified by P4PORT.

Note

Regarding the maximum size of the db.monitor table, see the db.monitor.shared configurable. The p4 configure show command indicates the actual maximum, but p4 configure show allservers indicates a manual preference that is only enforced if sufficient memory is available.

show allservers

Shows the configuration variables for all servers known to the system.

show variable

Shows the setting(s) of the specified variable. This variant of the command shows all the settings of the variable that it can find, in order of precedence, and can be useful for understanding why a particular variable is not configured with the value that you expect, because variable settings can come from multiple sources.

show P4NAME

If a Helix Server was invoked with -In P4NAME or with the P4NAME environment variable set to a server name, shows the settings of the named server.

Important

To avoid configuration problems, the value of serverID should always match the value of P4NAME if both are set. We recommend setting serverID instead P4NAME.

--comment=comment An optional explanation about why the value of a configurable was set. The comment can be provided when setting the configurable. The comment can also be provided any time later on. See Examples of p4 configure history.

history

p4 configure history displays the history of configurables' values recorded by the 2019.2 server onwards. Passing the long option --comment sets the comment for the most recent history.

The optional --iteration=N option can be used to retroactively set a comment on a specific history entry. In the history of a configurable, each “iteration” corresponds to a change associated with a configurable, such as setting or unsetting the value of a configurable. See Examples of p4 configure history.

history allservers

Shows the history of configuration variables for all servers known to the system.

history variable

Shows the history of the specified configuration variable.

help Show all the documented configurables. For each configurable, shows the value, description, value type, min value (if available), max value (if available), default value (if available), recommended value (if available), restart requirements, support level, category, and the URL of the online help. For a configurable, the URL corresponds to a row in the Configurables - alphabetical list table. For an environment variables, the URL corresponds to the environment variable's page in the Environment and registry variables section.

history P4NAME

If a Helix Server was invoked with -In P4NAME or with the P4NAME environment variable set to a server name, shows the history of the settings of the named server.

Important

To avoid configuration problems, the value of serverID should always match the value of P4NAME if both are set. We recommend setting serverID instead of P4NAME.

g-opts

See Global options.

Usage Notes

Can File Arguments Use Revision Specifier? Can File Arguments Use Revision Range? Minimal Access Level Required

N/A

N/A

super

available to an operator user

The output of p4 configure show only shows those configurables that have been changed from their default value at least once. Such configurables continue to show even if the value is specifically set to the default value.

Examples

p4 configure set "Replica1#startup.1=pull -i 1"

On the server named Replica1, set the startup.n configurable to poll 1 every second

p4 configure set rpl.labels.global=1

 

The server returns:

For server 'any', configuration variable 'rpl.labels.global' set to '1'

where 'any' means this setting applies to ALL servers, unless there is a local override for the same setting.

Examples of p4 configure history

Suppose the output of p4 configure history has no comment for iteration 2:

any#dm.user.setinitialpasswd changed from 'unset' to '0' (iteration 1) by 'usuper' on 2022/10/17 01:54:55 local to server NoServerId with comment 'security'
any#server.allowfetch changed from 'unset' to '1' (iteration 2) by 'usuper' on 2023/10/20 10:22:55 local to server NoServerId
any#server.allowfetch changed from '1' to 'unset' (iteration 3) by 'usuper' on 2023/10/31 17:28:45 local to server NoServerId with comment 'unset fetch'

The admin can revise the history to add a comment:

p4 configure history --comment="for DVCS" --iteration=2 server.allowfetch

which changes the output of p4 configure history to this:

any#dm.user.setinitialpasswd changed from 'unset' to '0' (iteration 1) by 'usuper' on 2022/10/17 01:54:55 local to server NoServerId with comment 'security'
any#server.allowfetch changed from 'unset' to '1' (iteration 2) by 'usuper' on 2023/10/20 10:22:55 local to server NoServerId with comment 'for DVCS'
any#server.allowfetch changed from '1' to 'unset' (iteration 3) by 'usuper' on 2023/10/31 17:28:45 local to server NoServerId with comment 'unset fetch'

Related Commands

The p4 configure command replaces many of the settings formerly set by p4 counter.

To list all counters and their values

p4 counters

To set Helix Core server system variables p4 set