postmaster.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:15k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. <refentry id="APP-POSTMASTER">
  2.  <refmeta>
  3.   <refentrytitle>
  4.    <application>postmaster</application>
  5.   </refentrytitle>
  6.   <refmiscinfo>Application</refmiscinfo>
  7.  </refmeta>
  8.  <refnamediv>
  9.   <refname id="postmaster-ref">
  10.    <application>postmaster</application>
  11.   </refname>
  12.   <refpurpose>
  13.    Run the <productname>Postgres</productname> multi-user backend
  14.   </refpurpose>
  15.  </refnamediv>
  16.  <refsynopsisdiv>
  17.   <refsynopsisdivinfo>
  18.    <date>1999-05-19</date>
  19.   </refsynopsisdivinfo>
  20.   <synopsis>
  21. postmaster [ -B <replaceable class="parameter">nBuffers</replaceable> ] [ -D <replaceable class="parameter">DataDir</replaceable> ] [ -i ]
  22. postmaster [ -B <replaceable class="parameter">nBuffers</replaceable> ] [ -D <replaceable class="parameter">DataDir</replaceable> ] [ -N <replaceable class="parameter">nBackends</replaceable> ] [ -S ]
  23.    [ -d [ <replaceable class="parameter">DebugLevel</replaceable> ] [ -i ] [ -o <replaceable class="parameter">BackendOptions</replaceable> ] [ -p <replaceable class="parameter">port</replaceable> ]
  24. postmaster [ -n | -s ] ...
  25.   </synopsis>
  26.   <refsect2 id="R2-APP-POSTMASTER-1">
  27.    <refsect2info>
  28.     <date>1999-05-19</date>
  29.    </refsect2info>
  30.    <title>
  31.     Inputs
  32.    </title>
  33.    <para>
  34.     <application>postmaster</application> accepts the following command line arguments:
  35.     
  36.     <variablelist>
  37.      <varlistentry>
  38.       <term>-B <replaceable class="parameter">nBuffers</replaceable></term>
  39.       <listitem>
  40.        <para>
  41. The number of shared-memory buffers for the 
  42. <application>postmaster</application>
  43. to allocate and manage for the backend server processes that it
  44. starts.  This value defaults to 64 buffers, where each buffer is 8k bytes
  45. (or whatever BLCKSZ is set to in config.h).
  46.        </para>
  47.       </listitem>
  48.      </varlistentry>
  49.      <varlistentry>
  50.       <term>-D <replaceable class="parameter">DataDir</replaceable></term>
  51.       <listitem>
  52.        <para>
  53. Specifies the directory to use as the root of the tree of database
  54. directories.  If -D is not given, the default data directory name is
  55. the value of the environment variable 
  56. <envar>PGDATA</envar>.
  57. If <envar>PGDATA</envar> is not set, then the directory used is
  58. <filename>$POSTGRESHOME/data</filename>.
  59. If neither environment variable is set and this command-line
  60. option is not specified, the default directory that was
  61. set at compile-time is used.
  62.        </para>
  63.       </listitem>
  64.      </varlistentry>
  65.      <varlistentry>
  66.       <term>-N <replaceable class="parameter">nBackends</replaceable></term>
  67.       <listitem>
  68.        <para>
  69. The maximum number of backend server processes that this postmaster
  70. is allowed to start.  In the default configuration, this value
  71. is usually set
  72. to 32, and can be set as high as 1024 if your system will support that
  73. many processes. Both the default and upper limit values can be altered
  74. when building <productname>Postgres</productname> (see src/include/config.h).
  75.        </para>
  76.       </listitem>
  77.      </varlistentry>
  78.      <varlistentry>
  79.       <term>-S</term>
  80.       <listitem>
  81.        <para>
  82. Specifies that the <application>postmaster</application>
  83. process should start up in silent mode.  That is, it will disassociate
  84. from the user's (controlling) tty and start its own process group.
  85. This should not be used in combination with debugging options because
  86. any messages printed to standard output and standard error are 
  87. discarded.
  88.        </para>
  89.       </listitem>
  90.      </varlistentry>
  91.      <varlistentry>
  92.       <term>-d [ <replaceable class="parameter">DebugLevel</replaceable> ]</term>
  93.       <listitem>
  94.        <para>
  95. The optional argument <replaceable class="parameter">DebugLevel</replaceable>
  96. determines the amount of debugging output the backend servers will
  97. produce.
  98. If <replaceable class="parameter">DebugLevel</replaceable>
  99. is one, the postmaster will trace all connection traffic,
  100. and nothing else.
  101. For levels two and higher,
  102. debugging is turned on in the backend process and the postmaster
  103. displays more information,
  104. including the backend environment and process traffic.
  105. Note that if no file is specified for backend servers to
  106. send their debugging output then this output will appear on the
  107. controlling tty of their parent <application>postmaster</application>.
  108.        </para>
  109.       </listitem>
  110.      </varlistentry>
  111.      <varlistentry>
  112.       <term>-i</term>
  113.       <listitem>
  114.        <para>
  115. This enables TCP/IP or Internet domain socket communication.
  116. Without this option, only local Unix domain socket communication is
  117. possible.
  118.        </para>
  119.       </listitem>
  120.      </varlistentry>
  121.      <varlistentry>
  122.       <term>-o <replaceable class="parameter">BackendOptions</replaceable></term>
  123.       <listitem>
  124.        <para>
  125. The 
  126. <literal>postgres</literal>
  127. options specified in
  128. <replaceable class="parameter">BackendOptions</replaceable>
  129. are passed to all backend server processes started by this
  130. <application>postmaster</application>.
  131. If the option string contains any spaces, the entire string must be
  132. quoted.
  133.        </para>
  134.       </listitem>
  135.      </varlistentry>
  136.      <varlistentry>
  137.       <term>-p <replaceable class="parameter">port</replaceable></term>
  138.       <listitem>
  139.        <para>
  140. Specifies the TCP/IP port or local Unix domain socket file extension
  141. on which the <application>postmaster</application>
  142. is to listen for connections from frontend applications.  Defaults to
  143. the value of the 
  144. <envar>PGPORT</envar> 
  145. environment variable, or if <envar>PGPORT</envar>
  146. is not set, then defaults to the value established when Postgres was
  147. compiled (normally 5432).  If you specify a port other than the
  148. default port then all frontend applications (including
  149. <application>psql</application>) must specify the same
  150. port using either command-line options or
  151. <envar>PGPORT</envar>.
  152.        </para>
  153.       </listitem>
  154.      </varlistentry>
  155.     </variablelist>
  156.    </para>
  157.    <para>
  158.     A few command line options are available for debugging in the case 
  159.     when a backend dies abnormally.
  160.     These options control the behavior of the
  161.     <application>postmaster</application> in this situation, and
  162.     <emphasis>neither option is intended for use in
  163.      ordinary operation</emphasis>.
  164.    </para>
  165.    <para>
  166.     The ordinary strategy for this situation is to notify all other
  167.     backends that they must terminate and then reinitialize the shared
  168.     memory and semaphores.  This is because an errant backend could have
  169.     corrupted some shared state before terminating.
  170.    </para>
  171.    <para>
  172.     These special-case options are:
  173.     <variablelist>
  174.      <varlistentry>
  175.       <term>-n</term>
  176.       <listitem>
  177.        <para>
  178. <application>postmaster</application>
  179. will not reinitialize shared data structures.  A knowledgable system
  180. programmer can then use the
  181. <application>shmemdoc</application>
  182. program to examine shared memory and semaphore state.
  183.        </para>
  184.      </listitem>
  185.     </varlistentry>
  186.     <varlistentry>
  187.       <term>-s</term>
  188.       <listitem>
  189.        <para>
  190. <application>postmaster</application>
  191. will stop all other backend processes by sending the signal
  192. <literal>SIGSTOP</literal>,
  193. but will not cause them to terminate.  This permits system programmers
  194. to collect core dumps from all backend processes by hand.
  195.        </para>
  196.       </listitem>
  197.      </varlistentry>
  198.     </variablelist>
  199.    </para>
  200.   </refsect2>
  201.   <refsect2 id="R2-APP-POSTMASTER-2">
  202.    <refsect2info>
  203.     <date>1999-05-19</date>
  204.    </refsect2info>
  205.    <title>
  206.     Outputs
  207.    </title>
  208.    <para>
  209.     <variablelist>
  210.      <!--
  211.      <varlistentry>
  212.       <term>
  213.        FindBackend: could not find a backend to execute...
  214.       </term>
  215.       <listitem>
  216.        <para>
  217. If you see this message, you do not have the 
  218. <application>postgres</application>
  219.      executable in your path.  Add the directory in which
  220.     <application>postgres</application> resides to
  221. your path.
  222.        </para>
  223.       </listitem>
  224.      </varlistentry>
  225.      -->
  226.      <varlistentry>
  227.       <term><computeroutput>
  228. semget: No space left on device
  229.        </computeroutput></term>
  230.       <listitem>
  231.        <para>
  232. If you see this message, you should run the
  233. <application>ipcclean</application>
  234. command.  After doing this, try starting
  235. <application>postmaster</application>
  236. again.  If this still doesn't work, you probably need to configure
  237. your kernel for shared memory and semaphores as described in the
  238. installation notes.  If you run multiple instances of
  239. <application>postmaster</application>
  240. on a single host, or have a kernel with particularly small shared memory
  241. and/or semaphore limits, you may have to reconfigure your kernel to increase
  242. its shared memory or semaphore parameters.
  243. <tip>
  244.  <para>
  245.   You may be able to postpone
  246.   reconfiguring your kernel by decreasing -B to reduce
  247.   <productname>Postgres</productname>' shared memory
  248.   consumption, or by reducing -N to reduce Postgres' semaphore
  249.   consumption.
  250.  </para>
  251. </tip>
  252.        </para>
  253.       </listitem>
  254.      </varlistentry>
  255.      <varlistentry>
  256.       <term><computeroutput>
  257. StreamServerPort: cannot bind to port
  258.        </computeroutput></term>
  259.       <listitem>
  260.        <para>
  261. If you see this message, you should be certain that there is no other 
  262. <application>postmaster</application>
  263. process already running.  The easiest way to determine this is by
  264. using the command
  265. <programlisting>
  266. % ps -ax | grep postmaster
  267. </programlisting>
  268. on BSD-based systems, or
  269. <programlisting>
  270. % ps -e | grep postmast
  271. </programlisting>
  272. for System V-like or POSIX-compliant systems such as HP-UX.
  273.        </para>
  274.        <para>
  275. If you 
  276. are sure that no other
  277. <application>postmaster</application>
  278. processes are running and you still get this error, try specifying a
  279. different port using the
  280. <literal>-p</literal>
  281. option.  You may also get this error if you terminate the
  282. <application>postmaster</application>
  283. and immediately restart it using the same port; in this case, you must
  284. simply wait a few seconds until the operating system closes the port
  285. before trying again.  Finally, you may get this error if you specify
  286. a port number that your operating system considers to be reserved.
  287. For example, many versions of Unix consider port numbers under 1024 to
  288. be <firstterm>trusted</firstterm>
  289. and only permit the Unix superuser to access them.
  290.        </para>
  291.       </listitem>
  292.      </varlistentry>
  293.      <varlistentry>
  294.       <term><computeroutput>
  295. IpcMemoryAttach: shmat() failed: Permission denied
  296.        </computeroutput></term>
  297.       <listitem>
  298.        <para>
  299. A likely explanation is that another user attempted to start a
  300. <application>postmaster</application>
  301. process on the same port which acquired shared resources and then 
  302. died.  Since Postgres shared memory keys are based on the port number 
  303. assigned to the
  304. <application>postmaster</application>,
  305. such conflicts are likely if there is more than one installation on 
  306. a single host.  If there are no other
  307. <application>postmaster</application>
  308. processes currently running (see above), run
  309. <application>ipcclean</application>
  310. and try again.  If other <application>postmaster</application>
  311. images
  312. are running, you will have to find the owners of those processes to
  313. coordinate the assignment of port numbers and/or removal of unused
  314. shared memory segments.
  315.        </para>
  316.       </listitem>
  317.      </varlistentry>
  318.     </variablelist>
  319.    </para>
  320.   </refsect2>
  321.  </refsynopsisdiv>
  322.  <refsect1 id="R1-APP-POSTMASTER-1">
  323.   <refsect1info>
  324.    <date>1999-05-19</date>
  325.   </refsect1info>
  326.   <title>
  327.    Description
  328.   </title>
  329.   <para>
  330.    <application>postmaster</application>
  331.    manages the communication between frontend and backend processes, as
  332.    well as allocating the shared buffer pool and SysV semaphores
  333.    (on machines without a test-and-set instruction).
  334.    <application>postmaster</application>
  335.    does not itself interact with the user and should be started as a
  336.    background process.
  337.   </para>
  338.   <para>
  339.    <emphasis>Only one postmaster should be running at a time in a given
  340.     <productname>Postgres</productname> installation.</emphasis>
  341.    Here, an installation means a database directory and
  342.    <application>postmaster</application> port number.
  343.    You can run more than one postmaster on a machine only if each one has a
  344.    separate directory and port number.
  345.   </para>
  346.  </refsect1>
  347.  <refsect1 id="R1-APP-POSTMASTER-2">
  348.   <refsect1info>
  349.    <date>1998-10-04</date>
  350.   </refsect1info>
  351.   <title>
  352.    Notes
  353.   </title>
  354.   
  355.   <para>
  356.    If at all possible,
  357.    <emphasis>do not</emphasis>
  358.    use <literal>SIGKILL</literal>
  359.    when killing the <application>postmaster</application>.
  360.    <literal>SIGHUP</literal>,
  361.    <literal>SIGINT</literal>,
  362.    or
  363.    <literal>SIGTERM</literal>
  364.    (the default signal for 
  365.    <application>kill</application>(1))"
  366.    should be used instead. Using
  367.    <programlisting>
  368. % kill -KILL
  369.    </programlisting>
  370. or its alternative form
  371.    <programlisting>
  372. % kill -9
  373.    </programlisting>
  374.    will prevent <application>postmaster</application>
  375.    from freeing the system resources (e.g., shared memory and semaphores)
  376.    that it holds before dying.  This prevents you from having to deal with
  377.    the problem with shared memory described earlier.
  378.   </para>
  379.   <para>
  380.    Useful utilities for dealing with shared memory problems include
  381.    <application>ipcs(1)</application>,
  382.    <application>ipcrm(1</application>), and
  383.    <application>ipcclean(1)</application>.
  384.   </para>
  385.  </refsect1>
  386.  
  387.  <refsect1 id="R1-APP-POSTMASTER-3">
  388.   <refsect1info>
  389.    <date>1998-10-04</date>
  390.   </refsect1info>
  391.   <title>
  392.    Usage
  393.   </title>
  394.   <para>
  395.    To start <application>postmaster</application> using default
  396.    values, type:
  397.    <programlisting>
  398. % nohup postmaster >logfile 2>&1 &
  399.    </programlisting>
  400.    This command will start up <application>postmaster</application>
  401.    on the default port (5432). This is the
  402.    simplest and most common way to start the
  403.    <application>postmaster</application>.
  404.   </para>
  405.   <para>
  406.    To start <application>postmaster</application> with a specific port
  407.    and executable name:
  408.    <programlisting>
  409. % nohup postmaster -p 1234 &
  410.    </programlisting>
  411.    This command will start up <application>postmaster</application>
  412.    communicating through the port 1234. In order to
  413.    connect to this <application>postmaster</application>
  414.    using psql, you would need to run it as
  415.    <programlisting>
  416. % psql -p 1234
  417.    </programlisting>
  418.    or set the environment variable <envar>PGPORT</envar>:
  419.    <programlisting>
  420. % setenv PGPORT 1234
  421. % psql
  422.    </programlisting>.
  423.   </para>
  424.  </refsect1>
  425. </refentry>
  426. <!-- Keep this comment at the end of the file
  427. Local variables:
  428. mode: sgml
  429. sgml-omittag:nil
  430. sgml-shorttag:t
  431. sgml-minimize-attributes:nil
  432. sgml-always-quote-attributes:t
  433. sgml-indent-step:1
  434. sgml-indent-data:t
  435. sgml-parent-document:nil
  436. sgml-default-dtd-file:"../reference.ced"
  437. sgml-exposed-tags:nil
  438. sgml-local-catalogs:"/usr/lib/sgml/catalog"
  439. sgml-local-ecat-files:nil
  440. End:
  441. -->