Print Logo

Apache and System V IPCs




<<  <   >  >>

Apache and some other programs need System V Inter-Process Communication (IPC) enabled in the Linux kernel. If you get this error when starting Apache:

[emerg] (38)Function not implemented: Couldn't create accept lock

then it is possible that System V IPC is not enabled. If you are creating a custom Linux kernel, the option you want to enable System V IPC is:

CONFIG_SYSVIPC=y

The proc filesystem, if enabled on your kernel, will list the semaphore usage. With Apache off:

root:/proc/sysvipc# cat sem
       key      semid perms      nsems   uid   gid  cuid  cgid      otime      ctime

Let's start Apache:

root:/proc/sysvipc# /usr/local/apache2/bin/apachectl start

Now we see some usage:

root:/proc/sysvipc# cat sem
       key      semid perms      nsems   uid   gid  cuid  cgid      otime      ctime
         0      98304   600          1  1001 4294967295     0     0          0 1241364839
root:/proc/sysvipc#

The uid should match the uid of the process running Apache. Another way to check is with the ipcs command:

root:/proc/sysvipc# ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00000000 98304      apache    600        1         

root:/proc/sysvipc#

Note that there are resources associated with System V IPCs, and that a heavily used server can run out of these resources and throw a similar error. Specifically, you might see an error like "No space left on device: Couldn't create accept lock". This may be because the limit on semaphores had been reached and you need to set this at a higher number or free up some semaphores. You can use the ipcs -u command to list a summary of all related resources:


root:/proc/sysvipc# ipcs -u

------ Shared Memory Status --------
segments allocated 10
pages allocated 960
pages resident  833
pages swapped   0
Swap performance: 0 attempts	 0 successes

------ Semaphore Status --------
used arrays = 1
allocated semaphores = 1

------ Messages: Status --------
allocated queues = 0
used headers = 0
used space = 0 bytes

root:/proc/sysvipc#






This article comes from NetAdminTools:
http://www.netadmintools.com/

The URL for this story is:
http://www.netadmintools.com/art607.html

Copyright 1997-2009 NetAdminTools.com. Read our Terms of Use.