我知道每Unix进程进程表都进入点(entry)核程序执行该进程使用切信息都存储进入点用ps命令察看系统进程信息看进程表相关数据fork()系统调用建立新进程核进程进程表给新进程配进入点相关信息存储该进入点所应进程表内些信息项其父进程识别码进程走完自命周期执行exit()系统调用原进 程表数据该进程退码(exit code)、执行所用CPU间等数据所取代些数据直保留系统传递给父进程止由见defunct进程现间进 程终止父进程尚未读取些数据前
defunct进程能直接kill -9杀掉否则叫僵尸进程
知道defunct进程产原轻易kill掉defunct进程
二:
1重启服务器电脑简单易用服务器电脑运行其程序代价
所尽量使用面种
2找该defunct僵尸进程父进程该进程父进程杀掉则defunct进程自消失使用kill -19命令可以挂起一个进程,而在Linux系统中查看一个进程被挂起了kill-19,可以使用ps命令。ps命令可以用于查看进程的状态,其中T代表挂起状态,因此可以使用ps命令查看指定进程的状态,如果进程的状态为T,则表明该进程已被挂起,比如:ps aux | grep process_name,其中process_name为要查看的进程名称,若该进程的状态为T,则表明该进程已被挂起。另外,也可以使用top命令查看进程状态,其中T也表示挂起状态。系统会检测内存,如果内存占用过大,会自动清理,你查看一下系统日志/var/log/messages :
Sep 21 10:34:26 iZ94dvgpg40Z kernel: Out of memory: Kill process 11462 (java ) score 358 or sacrifice child
Sep 21 10:34:26 iZ94dvgpg40Z kernel: Killed process 11462 (java ) total-vm:3100672kB, anon-rss:695128kB, file-rss:0kB
参考>OS:cent os 65
日志路径:/var/log/messages
服务器上跑的一个程序,发现报了Killed。查看/var/log/messages里的日志,发现以下报错:
[plain] view plain copy
Aug 11 16:28:11 kernel: Out of memory: Kill process 3080 (forward) score 559 or sacrifice child
Aug 11 16:28:11 kernel: Killed process 3080, UID 0, (forward) total-vm:1429064kB, anon-rss:1130444kB, file-rss:136kB
原来linux下也有内存OOM的处理,不同于android 杀掉报OOM的进程,linux是杀掉当前最占用内存的进程。
当Linux报OOM时,意味着整个系统的内存已经不足,如果不杀死进程的话,就会导致系统的崩溃。每个进程都会存有一个oom_score的参数,比如输出pid为988的oom_score:
[plain] view plain copy
cat /proc/988/oom_score
OOM Killer 会在系统报OOM的时候,杀死当前score最高的进程,一般情况也就是占用内存最大的进程。
解决方法:一是增加系统内存,二是优化进程,使其占用内存降低。三是可以使用oom_score_adj参数,这个参数会被计算入oom_score,可以避免进程被杀死(不推荐使用)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)