just do it
分类: 系统运维
2014-01-13 23:53:28
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用于显示消息队列、共享内存、信号灯信息的
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。
更深入的了解:
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
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