postmaster.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:15k
- <refentry id="APP-POSTMASTER">
- <refmeta>
- <refentrytitle>
- <application>postmaster</application>
- </refentrytitle>
- <refmiscinfo>Application</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname id="postmaster-ref">
- <application>postmaster</application>
- </refname>
- <refpurpose>
- Run the <productname>Postgres</productname> multi-user backend
- </refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <refsynopsisdivinfo>
- <date>1999-05-19</date>
- </refsynopsisdivinfo>
- <synopsis>
- postmaster [ -B <replaceable class="parameter">nBuffers</replaceable> ] [ -D <replaceable class="parameter">DataDir</replaceable> ] [ -i ]
- postmaster [ -B <replaceable class="parameter">nBuffers</replaceable> ] [ -D <replaceable class="parameter">DataDir</replaceable> ] [ -N <replaceable class="parameter">nBackends</replaceable> ] [ -S ]
- [ -d [ <replaceable class="parameter">DebugLevel</replaceable> ] [ -i ] [ -o <replaceable class="parameter">BackendOptions</replaceable> ] [ -p <replaceable class="parameter">port</replaceable> ]
- postmaster [ -n | -s ] ...
- </synopsis>
- <refsect2 id="R2-APP-POSTMASTER-1">
- <refsect2info>
- <date>1999-05-19</date>
- </refsect2info>
- <title>
- Inputs
- </title>
- <para>
- <application>postmaster</application> accepts the following command line arguments:
-
- <variablelist>
- <varlistentry>
- <term>-B <replaceable class="parameter">nBuffers</replaceable></term>
- <listitem>
- <para>
- The number of shared-memory buffers for the
- <application>postmaster</application>
- to allocate and manage for the backend server processes that it
- starts. This value defaults to 64 buffers, where each buffer is 8k bytes
- (or whatever BLCKSZ is set to in config.h).
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-D <replaceable class="parameter">DataDir</replaceable></term>
- <listitem>
- <para>
- Specifies the directory to use as the root of the tree of database
- directories. If -D is not given, the default data directory name is
- the value of the environment variable
- <envar>PGDATA</envar>.
- If <envar>PGDATA</envar> is not set, then the directory used is
- <filename>$POSTGRESHOME/data</filename>.
- If neither environment variable is set and this command-line
- option is not specified, the default directory that was
- set at compile-time is used.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-N <replaceable class="parameter">nBackends</replaceable></term>
- <listitem>
- <para>
- The maximum number of backend server processes that this postmaster
- is allowed to start. In the default configuration, this value
- is usually set
- to 32, and can be set as high as 1024 if your system will support that
- many processes. Both the default and upper limit values can be altered
- when building <productname>Postgres</productname> (see src/include/config.h).
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-S</term>
- <listitem>
- <para>
- Specifies that the <application>postmaster</application>
- process should start up in silent mode. That is, it will disassociate
- from the user's (controlling) tty and start its own process group.
- This should not be used in combination with debugging options because
- any messages printed to standard output and standard error are
- discarded.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-d [ <replaceable class="parameter">DebugLevel</replaceable> ]</term>
- <listitem>
- <para>
- The optional argument <replaceable class="parameter">DebugLevel</replaceable>
- determines the amount of debugging output the backend servers will
- produce.
- If <replaceable class="parameter">DebugLevel</replaceable>
- is one, the postmaster will trace all connection traffic,
- and nothing else.
- For levels two and higher,
- debugging is turned on in the backend process and the postmaster
- displays more information,
- including the backend environment and process traffic.
- Note that if no file is specified for backend servers to
- send their debugging output then this output will appear on the
- controlling tty of their parent <application>postmaster</application>.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-i</term>
- <listitem>
- <para>
- This enables TCP/IP or Internet domain socket communication.
- Without this option, only local Unix domain socket communication is
- possible.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-o <replaceable class="parameter">BackendOptions</replaceable></term>
- <listitem>
- <para>
- The
- <literal>postgres</literal>
- options specified in
- <replaceable class="parameter">BackendOptions</replaceable>
- are passed to all backend server processes started by this
- <application>postmaster</application>.
- If the option string contains any spaces, the entire string must be
- quoted.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-p <replaceable class="parameter">port</replaceable></term>
- <listitem>
- <para>
- Specifies the TCP/IP port or local Unix domain socket file extension
- on which the <application>postmaster</application>
- is to listen for connections from frontend applications. Defaults to
- the value of the
- <envar>PGPORT</envar>
- environment variable, or if <envar>PGPORT</envar>
- is not set, then defaults to the value established when Postgres was
- compiled (normally 5432). If you specify a port other than the
- default port then all frontend applications (including
- <application>psql</application>) must specify the same
- port using either command-line options or
- <envar>PGPORT</envar>.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- <para>
- A few command line options are available for debugging in the case
- when a backend dies abnormally.
- These options control the behavior of the
- <application>postmaster</application> in this situation, and
- <emphasis>neither option is intended for use in
- ordinary operation</emphasis>.
- </para>
- <para>
- The ordinary strategy for this situation is to notify all other
- backends that they must terminate and then reinitialize the shared
- memory and semaphores. This is because an errant backend could have
- corrupted some shared state before terminating.
- </para>
- <para>
- These special-case options are:
- <variablelist>
- <varlistentry>
- <term>-n</term>
- <listitem>
- <para>
- <application>postmaster</application>
- will not reinitialize shared data structures. A knowledgable system
- programmer can then use the
- <application>shmemdoc</application>
- program to examine shared memory and semaphore state.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>-s</term>
- <listitem>
- <para>
- <application>postmaster</application>
- will stop all other backend processes by sending the signal
- <literal>SIGSTOP</literal>,
- but will not cause them to terminate. This permits system programmers
- to collect core dumps from all backend processes by hand.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- </refsect2>
- <refsect2 id="R2-APP-POSTMASTER-2">
- <refsect2info>
- <date>1999-05-19</date>
- </refsect2info>
- <title>
- Outputs
- </title>
- <para>
- <variablelist>
- <!--
- <varlistentry>
- <term>
- FindBackend: could not find a backend to execute...
- </term>
- <listitem>
- <para>
- If you see this message, you do not have the
- <application>postgres</application>
- executable in your path. Add the directory in which
- <application>postgres</application> resides to
- your path.
- </para>
- </listitem>
- </varlistentry>
- -->
- <varlistentry>
- <term><computeroutput>
- semget: No space left on device
- </computeroutput></term>
- <listitem>
- <para>
- If you see this message, you should run the
- <application>ipcclean</application>
- command. After doing this, try starting
- <application>postmaster</application>
- again. If this still doesn't work, you probably need to configure
- your kernel for shared memory and semaphores as described in the
- installation notes. If you run multiple instances of
- <application>postmaster</application>
- on a single host, or have a kernel with particularly small shared memory
- and/or semaphore limits, you may have to reconfigure your kernel to increase
- its shared memory or semaphore parameters.
- <tip>
- <para>
- You may be able to postpone
- reconfiguring your kernel by decreasing -B to reduce
- <productname>Postgres</productname>' shared memory
- consumption, or by reducing -N to reduce Postgres' semaphore
- consumption.
- </para>
- </tip>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><computeroutput>
- StreamServerPort: cannot bind to port
- </computeroutput></term>
- <listitem>
- <para>
- If you see this message, you should be certain that there is no other
- <application>postmaster</application>
- process already running. The easiest way to determine this is by
- using the command
- <programlisting>
- % ps -ax | grep postmaster
- </programlisting>
- on BSD-based systems, or
- <programlisting>
- % ps -e | grep postmast
- </programlisting>
- for System V-like or POSIX-compliant systems such as HP-UX.
- </para>
- <para>
- If you
- are sure that no other
- <application>postmaster</application>
- processes are running and you still get this error, try specifying a
- different port using the
- <literal>-p</literal>
- option. You may also get this error if you terminate the
- <application>postmaster</application>
- and immediately restart it using the same port; in this case, you must
- simply wait a few seconds until the operating system closes the port
- before trying again. Finally, you may get this error if you specify
- a port number that your operating system considers to be reserved.
- For example, many versions of Unix consider port numbers under 1024 to
- be <firstterm>trusted</firstterm>
- and only permit the Unix superuser to access them.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><computeroutput>
- IpcMemoryAttach: shmat() failed: Permission denied
- </computeroutput></term>
- <listitem>
- <para>
- A likely explanation is that another user attempted to start a
- <application>postmaster</application>
- process on the same port which acquired shared resources and then
- died. Since Postgres shared memory keys are based on the port number
- assigned to the
- <application>postmaster</application>,
- such conflicts are likely if there is more than one installation on
- a single host. If there are no other
- <application>postmaster</application>
- processes currently running (see above), run
- <application>ipcclean</application>
- and try again. If other <application>postmaster</application>
- images
- are running, you will have to find the owners of those processes to
- coordinate the assignment of port numbers and/or removal of unused
- shared memory segments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- </refsect2>
- </refsynopsisdiv>
- <refsect1 id="R1-APP-POSTMASTER-1">
- <refsect1info>
- <date>1999-05-19</date>
- </refsect1info>
- <title>
- Description
- </title>
- <para>
- <application>postmaster</application>
- manages the communication between frontend and backend processes, as
- well as allocating the shared buffer pool and SysV semaphores
- (on machines without a test-and-set instruction).
- <application>postmaster</application>
- does not itself interact with the user and should be started as a
- background process.
- </para>
- <para>
- <emphasis>Only one postmaster should be running at a time in a given
- <productname>Postgres</productname> installation.</emphasis>
- Here, an installation means a database directory and
- <application>postmaster</application> port number.
- You can run more than one postmaster on a machine only if each one has a
- separate directory and port number.
- </para>
- </refsect1>
- <refsect1 id="R1-APP-POSTMASTER-2">
- <refsect1info>
- <date>1998-10-04</date>
- </refsect1info>
- <title>
- Notes
- </title>
-
- <para>
- If at all possible,
- <emphasis>do not</emphasis>
- use <literal>SIGKILL</literal>
- when killing the <application>postmaster</application>.
- <literal>SIGHUP</literal>,
- <literal>SIGINT</literal>,
- or
- <literal>SIGTERM</literal>
- (the default signal for
- <application>kill</application>(1))"
- should be used instead. Using
- <programlisting>
- % kill -KILL
- </programlisting>
- or its alternative form
- <programlisting>
- % kill -9
- </programlisting>
- will prevent <application>postmaster</application>
- from freeing the system resources (e.g., shared memory and semaphores)
- that it holds before dying. This prevents you from having to deal with
- the problem with shared memory described earlier.
- </para>
- <para>
- Useful utilities for dealing with shared memory problems include
- <application>ipcs(1)</application>,
- <application>ipcrm(1</application>), and
- <application>ipcclean(1)</application>.
- </para>
- </refsect1>
-
- <refsect1 id="R1-APP-POSTMASTER-3">
- <refsect1info>
- <date>1998-10-04</date>
- </refsect1info>
- <title>
- Usage
- </title>
- <para>
- To start <application>postmaster</application> using default
- values, type:
- <programlisting>
- % nohup postmaster >logfile 2>&1 &
- </programlisting>
- This command will start up <application>postmaster</application>
- on the default port (5432). This is the
- simplest and most common way to start the
- <application>postmaster</application>.
- </para>
- <para>
- To start <application>postmaster</application> with a specific port
- and executable name:
- <programlisting>
- % nohup postmaster -p 1234 &
- </programlisting>
- This command will start up <application>postmaster</application>
- communicating through the port 1234. In order to
- connect to this <application>postmaster</application>
- using psql, you would need to run it as
- <programlisting>
- % psql -p 1234
- </programlisting>
- or set the environment variable <envar>PGPORT</envar>:
- <programlisting>
- % setenv PGPORT 1234
- % psql
- </programlisting>.
- </para>
- </refsect1>
- </refentry>
- <!-- Keep this comment at the end of the file
- Local variables:
- mode: sgml
- sgml-omittag:nil
- sgml-shorttag:t
- sgml-minimize-attributes:nil
- sgml-always-quote-attributes:t
- sgml-indent-step:1
- sgml-indent-data:t
- sgml-parent-document:nil
- sgml-default-dtd-file:"../reference.ced"
- sgml-exposed-tags:nil
- sgml-local-catalogs:"/usr/lib/sgml/catalog"
- sgml-local-ecat-files:nil
- End:
- -->