<varlistentry>
- <term><systemitem class="osname">Solaris</></term>
+ <term><systemitem class="osname">Solaris</> 2.6 to 2.9 (Solaris
+ 6 to Solaris 9)</term>
<indexterm><primary>Solaris</><secondary>IPC configuration</></>
<listitem>
<para>
- At least in version 2.6, the default maximum size of a shared
- memory segment is too low for <productname>PostgreSQL</>. The
- relevant settings can be changed in <filename>/etc/system</>,
- for example:
+ The default maximum size of a shared memory segment is too low for
+ <productname>PostgreSQL</>. The relevant settings can be changed in
+ <filename>/etc/system</>, for example:
<programlisting>
set shmsys:shminfo_shmmax=0x2000000
set shmsys:shminfo_shmmin=1
set semsys:seminfo_semmns=512
set semsys:seminfo_semmsl=32
</programlisting>
- You need to reboot for the changes to take effect.
+ You need to reboot for the changes to take effect. See also
+ <ulink url="http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.html"></ulink>
+ for information on shared memory under older versions of Solaris.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><systemitem class="osname">Solaris</> 2.10 (Solaris
+ 10)</term>
+ <term><systemitem class="osname">OpenSolaris</></term>
+ <indexterm><primary>Solaris</><secondary>IPC configuration</></>
+ <listitem>
+ <para>
+ In Solaris 10 and OpenSolaris, the default shared memory and
+ semaphore settings are good enough for most
+ <productname>PostgreSQL</> applications. Solaris now defaults
+ to a <varname>SHMMAX</> of one-quarter of system <acronym>RAM</>. If
+ you need to increase this in order to set shared memory settings
+ slightly higher, you should use a project setting associated
+ with the <literal>postgres</> user. For example, run the
+ following as <literal>root</>:
+<programlisting>
+projadd -c "PostgreSQL DB User" -K "project.max-shm-memory=(privileged,8GB,deny)" -U postgres -G postgres user.postgres
+</programlisting>
+ </para>
+
+ <para>
+ This command adds the <literal>user.postgres</> project and
+ raises the shared memory maximum for the <literal>postgres</>
+ user to 8GB, and takes effect the next time that user logs
+ in, or when you restart <productname>PostgreSQL</> (not reload).
+ The above assumes that <productname>PostgreSQL</> is run by
+ the <literal>postgres</> user in the <literal>postgres</>
+ group. No server reboot is required.
+ </para>
+
+ <para>
+ Other recommended kernel setting changes for database servers which will
+ have a large number of connections are:
+<programlisting>
+project.max-shm-ids=(priv,32768,deny)
+project.max-sem-ids=(priv,4096,deny)
+project.max-msg-ids=(priv,4096,deny)
+</programlisting>
</para>
<para>
- See also <ulink
- url="http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.html"></>
- for information on shared memory under
- <productname>Solaris</>.
+ Additionally, if you are running <productname>PostgreSQL</>
+ inside a zone, you may need to raise the zone resource usage
+ limits as well. See "Chapter2: Projects and Tasks" in the
+ <citetitle>Solaris 10 System Administrator's Guide</> for more
+ information on <literal>projects</> and <command>prctl</>.
</para>
</listitem>
</varlistentry>