求教AIX系统在pagespace耗尽后的行为
大家好,
我是aix应用程序开发人员。最近发现我们开发的系统在长时间运行后可能导致服务器没响应(当前已连接
的telnet断开,新的telnet连接无法建立,但是ping检测网络是通的)。
后来调查发现是由于一个进程在异常情况不断的申请内存而不释放,将pagespace耗尽导致的。
为了验证程序,我们打算重现问题,为迅速重现我们将pagespace设置为(512M),物理内存为8G。使用
topas_nmon定时采样监控系统状态。先后进行了多次试验,现象都是运行一定时间后,telnet无法登录服务器。应用
进程被杀死,通过errpt查看到在系统无响应的时点,有大量的如下错误:
C5C09FFA 0324215411 P S SYSVMM SOFTWARE PROGRAM ABNORMALLY TERMINATED
C5C09FFA 0324215411 P S SYSVMM SOFTWARE PROGRAM ABNORMALLY TERMINATED
C5C09FFA 0324215411 P S SYSVMM SOFTWARE PROGRAM ABNORMALLY TERMINATED
C5C09FFA 0324212111 P S SYSVMM SOFTWARE PROGRAM ABNORMALLY TERMINATED
C5C09FFA 0324212111 P S SYSVMM SOFTWARE PROGRAM ABNORMALLY TERMINATED
C5C09FFA 0324212111 P S SYSVMM SOFTWARE PROGRAM ABNORMALLY TERMINATED
使用errpt -a -j C5C09FFA,显示信息均如下形式:
---------------------------------------------------------------------------
LABEL: PGSP_KILL
IDENTIFIER: C5C09FFA
Date/Time: Wed May 11 02:18:55 BEIST 2011
Sequence Number: 5980
Machine Id: xxxxxxx
Node Id: xxxxx
Class: S
Type: PERM
Resource Name: SYSVMM
Description
SOFTWARE PROGRAM ABNORMALLY TERMINATED
Probable Causes
SYSTEM RUNNING OUT OF PAGING SPACE
Failure Causes
INSUFFICIENT PAGING SPACE DEFINED FOR THE SYSTEM
PROGRAM USING EXCESSIVE AMOUNT OF PAGING SPACE
Recommended Actions
DEFINE ADDITIONAL PAGING SPACE
REDUCE PAGING SPACE REQUIREMENTS OF PROGRAM(S)
Detail Data
PROGRAM
sh
USER'S PROCESS ID:
299316
PROGRAM'S PAGING SPACE USE IN 1KB BLOCKS
0
通过查询资料,了解aix在pagespace满的情况下会主动杀死一些进程,释放pagespace。但是我还是有一些问题
不是很清楚:
1、pagespace被耗尽的时候,系统根据什么条件触发杀死进程的动作?
2、系统在杀进程时,如何选择对象?如何选择顺序?根据我的日志,操作系统杀死的不只是占有大量pagespace
的进程,如上例中sh,并没有使用pagespace。
3、在其中的一次测试的日志中,发现系统在开始杀进程的时间点左右,有几个系统参数瞬间飙升,这是为什么?
RunQueue Swap-in pswitch syscall read write
0.37 0 2032 5463 167 283
0.47 0 2017 5684 175 282
0.5 0 2346 6401 211 332
0.7 0 6023 64405 150 10666
2.23 0 17558 210499 218 35861
2.83 0 35146 200604 230 30443
2.97 0 35879 204855 5921 31620
2.87 0 36263 196979 198 27542
4、pagespace耗尽后,出现常说的系统hung机现象,用户无法登录,ping网络是通的。那么无法登录直接原因是什么呢?
在我进行的几次试验中,有的时候是telnetd被杀死,是否是因为telnetd被杀死,所以用户无法进行远程登录?但是有的
时候errpt中显示是sh被杀死,没有telnetd被杀死的信息,telnet也无法登录。
以上4个问题就是我在试验过程中的疑问,请各位高人指点,谢谢;)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
讨论这个有多大意义呢
就好象讨论从5楼跳下去,会摔成啥样呢,是一级残废,还是二级,。。。。,死,半死,还是活,有意义吗
不如讨论怎么不从5楼跳下去
回复 2# yddll
谢谢回复,由于我们测试过程中有两种情况(一种情况:系统杀死进程时,系统各个指标正常;另一种情况:系统杀死进程时pswitch等飙升),
想要调查清楚这两种情况是不是都是由我的程序bug引起的,所以想了解在这种情况下系统的行为。
估计是你程序申请内存没有正常释放造成的
杀sh的话,你的程序是从shell启动的么??如果是,那就对了,没杀错