当前位置: > Linux故障 >

httpd dead but pid file exists

时间:2014-12-20 21:32来源:linux.it.net.cn 作者:IT

httpd dead but pid file existsApache起不来,报No space left on device: Couldn’t create accept lock
service httpd restart
提示正常
service httpd status
提示:httpd dead but pid file exists
检查80端口是否被占用
netstat -tulpn | grep :80
没有记录
继续
rm /var/lock/subsys/httpd
rm /var/run/httpd/httpd.pid
service httpd restart
还是提示:httpd dead but pid file exists
检查 /var/log/httpd/error_log
发现 [emerg] (28)No space left on device: Couldn’t create accept lock (/etc/httpd/logs/accept.lock.13255) (5)
以为是空间不足,造成无法创建锁文件,但是df -h察看,发觉不是这个问题。
google 一下
ipcs -s
—— Semaphore Arrays ——–
key        semid      owner      perms      nsems
0x000000a7 0          root      600        1
0x00000000 32769      apache    600        1
0x00000000 65538      apache    600        1
0x00000000 884739     apache    600        1
0x00000000 917508     apache    600        1

一大堆的ipc使用,需要干掉。
清除命令
for semid in `ipcs -s | grep apache | cut -f2 -d” “`;
do ipcrm -s $semid; done
service httpd restart
service httpd status
提示正常

查看the number of semaphores that are available on the system

admin@intlqa142012x:[/home/admin]ipcs -l

—— Shared Memory Limits ——–
max number of segments = 4096
max seg size (kbytes) = 32768
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1

—— Semaphore Limits ——–
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767

—— Messages: Limits ——–
max queues system wide = 16
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

如果有权限的话,可以修改这些限制:
To change these parameters, modify the file /etc/sysctl.conf and add the following lines:

kernel.msgmni = 1024
kernel.sem = 250 256000 32 1024

Then load these settings with the command:sysctl -p
-p Load in sysctl settings from the file specified or /etc/sysctl.conf if none given.

admin@intlqa142012x:[/home/admin]sysctl -p
error: permission denied on key ‘net.ipv4.ip_forward’
error: permission denied on key ‘net.ipv4.conf.default.rp_filter’
error: permission denied on key ‘net.ipv4.conf.default.accept_source_route’
error: permission denied on key ‘kernel.sysrq’
error: permission denied on key ‘kernel.core_uses_pid’

Your Apache process should now be able to create the needed semaphores and run properly.

说明:kernel.msgmni
该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。缺省设置:16。

admin@intlqa142012x:[/home/admin]cat /proc/sys/kernel/msgmni
16

在root下可用sysctl kernel.msgmni检查该参数:

admin@intlqa142012x:[/home/admin]sysctl kernel.msgmni
kernel.msgmni = 16

也可以在命令行下,使用sysctl -w kernel.msgmni=XXX重新设定。

admin@intlqa142012x:[/home/admin]sysctl -w kernel.msgmni=32
error: permission denied on key ‘kernel.msgmni’

 

 

ipcs 命令

ipcs – 分析消息队列、共享内存和信号量
ipcs – report status of interprocess communication facilities

ipcs displays certain information about active interprocess communication facilities. With no options, ipcs displays information in short format for the message queues, shared memory segments, and semaphores that are currently active in the system.

引用

它的语法:

 

ipcs [-mqs] [-abcopt] [-C core] [-N namelist]
-m 输出有关共享内存(shared memory)的信息
-q 输出有关信息队列(message queue)的信息
-s 输出信号量(semaphore)的信息
# ipcs -m
IPC status from as of 2007年04月10日 星期二 18时32分18秒 CST
T ID KEY MODE OWNER GROUP
Shared Memory:
m 0 0x50000d43 –rw-r–r– root root
m 501 0x1e90c97c –rw-r—– oracle dba

 

ipcrm – 删除ipc(清除共享内存信息)

引用
它的语法:
ipcrm -m|-q|-s shm_id
-m 输出有关共享内存(shared memory)的信息
-q 输出有关信息队列(message queue)的信息
-s 输出信号量(semaphore)的信息
shm_id 共享内存id
#ipcrm -m 501


ipcs用于显示消息队列、共享内存、信号灯信息的
q 显示消息队列
s 显示信号灯
m 显示共享内存
a 详细信息

其打印出当前你的系统中处于活动状态的共享内存的信息。

对每一个资源,这个命令会显示:

TYPE        包括信息队列(q),共享内存段(m),或者信号灯(s)。

ID         资源条目的唯一的表示号

KEY        应用程序存取资源使用的参数。

MODE        存取模式和许可权限的标记

OWNER and GROUP   登录名和用户属主的组号,OnLine使用的所有的共享内存资源的属主的属主          为root和informix组。

OnLine共享内存使用的基本键值为0x52564801。SERVERNUM的值乘上0X10000并且加上这个值就为共享内存的键值。这就 是,如果你的SERVERNUM的值为2,你的共享内存段的键值为0x52564801+(2*0x10000)=0x52584801。如果 SERVERNUM的值为6,产生的键值就为0x525c4801。
清除命令:
ipcs -s | grep nobody | perl -e ‘while (<STDIN>) { @a=split(/”s+/); print `ipcrm sem $a[1]`}’
然后启动Apache即可。更深入的了解:

 

Fixing Apache “No space left on device: Couldn’t create accept lock” errors

Error Message: When starting Apache, I get this error message in the main Apache error_log:

[emerg] (28)No space left on device: Couldn’t create accept lock
[notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[notice] Digest: generating secret for digest authentication …
[notice] Digest: done
[warn] pid file /etc/httpd/run/httpd.pid overwritten — Unclean shutdown of previous Apache run?
[emerg] (28)No space left on device: Couldn’t create accept lock

First off, check to make sure that you really aren’t out of disk space, or have hit a quota limit. Another way that Apache can create the “accept lock” is with a semaphore. A semaphore is an inter-process communication tool that is used by Apache to communicate with it’s child processes. This error message may mean that Apache couldn’t create a new semaphore.

Check to see how many semaphores are currently in use. If Apache is running correctly, you should see something like this:

# ipcs -s
—— Semaphore Arrays ——–
key semid owner perms nsems
0x00000000 68681743 apache 600 1
0x00000000 68714515 apache 600 1
0x00000000 68747291 apache 600 1

If Apache is stopped, and you still see these semaphores, then you can safely kill them by running this command for each semaphore id (in the second column)

$ ipcrm -s <semid>

To destroy all semaphores, you can run this from the command line (with “apache” being the apache-user):

for semid in `ipcs -s | grep nobody | cut -f2 -d” “`;

do ipcrm -s $semid; done

If you are out of semaphores

If you can’t create any more semaphores:

Sometimes your system may need to increase the number of semaphores that are available on the system. This requires a change to a kernel parameter. If you are running on a virtual server and cannot modify kernel parameters, you may need to ask your hosting provider to change this parameter on their host server To view the current parameters:

# ipcs -l
—— Shared Memory Limits ——–
max number of segments = 4096
max seg size (kbytes) = 32768
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1

—— Semaphore Limits ——–
max number of arrays = 1024
max semaphores per array = 250
max semaphores system wide = 256000
max ops per semop call = 32
semaphore max value = 32767

—— Messages: Limits ——–
max queues system wide = 1024
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

To change these parameters, modify the file /etc/sysctl.conf and add the following lines:

kernel.msgmni = 1024
kernel.sem = 250 256000 32 1024

Then load these settings with the command:

sysctl -p

Your Apache process should now be able to create the needed semaphores and run properly

这里介绍下kernel.msgmni

/proc/sys/kernel/msgmni

该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。
缺省设置:16

在 root 下用 sysctl kernel.msgmni 检查该参数, 也可以在命令行下

sysctl -w kernel.msgmni=XXX 重新设定。

 

man ipcs:

ipcs(1)                                                              ipcs(1)

NAME
ipcs – report status of interprocess communication facilities

SYNOPSIS
ipcs [-mqs] [-abcopt] [-C core] [-N namelist]

DESCRIPTION
ipcs displays certain information about active interprocess
communication facilities.   With no options, ipcs displays information
in short format for the message queues, shared memory segments, and
semaphores that are currently active in the system.

     Options
The following options restrict the display to the corresponding
facilities.

            (none)          This is equivalent to -mqs.

            -m              Display information about active shared memory
segments.
-q              Display information about active message queues.

            -s              Display information about active semaphores.

       The following options add columns of data to the display.   See “Column
Description” below.

            (none)          Display default columns: for all facilities: T,
ID, KEY, MODE, OWNER, GROUP.

            -a              Display all columns, as appropriate.   This is
equivalent to -bcopt.

            -b              Display largest-allowable-size information: for
message queues: QBYTES; for shared memory
segments: SEGSZ; for semaphores: NSEMS.

            -c              Display creator’s login name and group name: for
all facilities: CREATOR, CGROUP.

            -o              Display information on outstanding usage: for
message queues: CBYTES, QNUM; for shared memory
segments: NATTCH.

            -p              Display process number information: for message
queues: LSPID, LRPID; for shared memory segments:
CPID, LPID.

            -t              Display time information: for all facilities:
CTIME; for message queues: STIME, RTIME; for

Hewlett-Packard Company             – 1 –    HP-UX Release 11i: November 2000

ipcs(1)                                                              ipcs(1)

                           shared memory segments: ATIME, DTIME; for
semaphores: OTIME.

       The following options redefine the sources of information.

            -C core         Use core in place of /dev/kmem.   core can be a
core file or a directory created by savecrash or
savecore.

            -N namelist     Use file namelist or the namelist within core in
place of /stand/vmunix.   It opens a crash dump for
reading. Please refer to cr_open(3) for more
details.

     Column Descriptions
The column headings and the meaning of the columns in an ipcs listing
are given below.   The columns are printed from left to right in the
order shown below.

            T          Facility type:

                           m     Shared memory segment
q     Message queue
s     Semaphore

            ID         The identifier for the facility entry.

            KEY        The key used as an argument to msgget(), semget(), or
shmget() to create the facility entry.   (Note: The key
of a shared memory segment is changed to IPC_PRIVATE
when the segment has been removed until all processes
attached to the segment detach it.)
MODE       The facility access modes and flags: The mode consists
of 11 characters that are interpreted as follows:

                      The first two characters can be:

                           R     A process is waiting on a msgrcv().
S     A process is waiting on a msgsnd().
D     The associated shared memory segment has been
removed.   It will disappear when the last
process attached to the segment detaches it.
C     The associated shared memory segment is to be
cleared when the first attach is executed.
–     The corresponding special flag is not set.

                      The next 9 characters are interpreted as three sets of
three characters each.   The first set refers to the
owner’s permissions, the next to permissions of others
in the group of the facility entry, and the last to all

Hewlett-Packard Company             – 2 –    HP-UX Release 11i: November 2000
ipcs(1)                                                              ipcs(1)

                      others.

                      Within each set, the first character indicates
permission to read, the second character indicates
permission to write or alter the facility entry, and
the last character is currently unused.

                           r     Read permission is granted.
w     Write permission is granted.
a     Alter permission is granted.
–     The indicated permission is not granted.

            OWNER      The login name of the owner of the facility entry.

            GROUP      The group name of the group of the owner of the
facility entry.

            CREATOR    The login name of the creator of the facility entry.

            CGROUP     The group name of the group of the creator of the
facility entry.

            CBYTES     The number of bytes in messages currently outstanding
on the associated message queue.

            QNUM       The number of messages currently outstanding on the
associated message queue.

            QBYTES     The maximum number of bytes allowed in messages
outstanding on the associated message queue.

            LSPID      The process ID of the last process to send a message to
the associated message queue.

            LRPID      The process ID of the last process to receive a message
from the associated message queue.

            STIME      The time the last msgsnd() message was sent to the
associated message queue.

            RTIME      The time the last msgrcv() message was received from
the associated message queue.

            CTIME      The time when the associated facility entry was created
or changed.

            NATTCH     The number of processes attached to the associated
shared memory segment.

            SEGSZ      The size of the associated shared memory segment.

Hewlett-Packard Company             – 3 –    HP-UX Release 11i: November 2000

ipcs(1)                                                              ipcs(1)

            CPID       The process ID of the creating process of the shared
memory segment.

            LPID       The process ID of the last process to attach or detach
the shared memory segment.

            ATIME      The time the last shmat() attach was completed to the
associated shared memory segment.

            DTIME      The time the last shmdt() detach was completed on the
associated shared memory segment.

            NSEMS      The number of semaphores in the set associated with the
semaphore entry.

            OTIME      The time the last semop() semaphore operation was
completed on the set associated with the semaphore
entry.

WARNINGS
ipcs produces only an approximate indication of actual system status
because system processes are continually changing while ipcs is
acquiring the requested information.

       Do not rely on the exact field widths and spacing of the output, as
these will vary depending on the system, the release of HP-UX, and the
data to be displayed.

FILES
/dev/kmem            Kernel virtual memory
/etc/group           Group names
/etc/passwd          User names
/stand/vmunix        System namelist
SEE ALSO
msgop(2), semop(2), shmop(2).

STANDARDS CONFORMANCE
ipcs: SVID2, SVID3

Hewlett-Packard Company             – 4 –    HP-UX Release 11i: November 2000

(责任编辑:IT)
------分隔线----------------------------