最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用strace查找進(jìn)程卡死的原因分析

 更新時(shí)間:2023年06月21日 09:39:47   作者:SoulNov23  
這篇文章主要介紹了用strace查找進(jìn)程卡死的原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

用strace查找進(jìn)程卡死原因

最近遇到進(jìn)程卡死的情況,但是自己調(diào)試的過(guò)程中并不一定能復(fù)現(xiàn),都是需要運(yùn)行一段時(shí)間某些條件下才會(huì)觸發(fā),對(duì)于這種運(yùn)行著不能破壞現(xiàn)場(chǎng)的情況,我們可以使用gdb -p和strace -p來(lái)跟蹤。

首先我們用ps auxf

查看我們的進(jìn)程執(zhí)行到了哪一步:

可以看到執(zhí)行到了docker exec -i 178.20.1.229_0115034556 ls然后就卡死了

然后我們進(jìn)一步通過(guò)

strace查看執(zhí)行這個(gè)操作死在哪個(gè)系統(tǒng)回調(diào)了:

這里可以看到死在了系統(tǒng)回調(diào)read這里

描述符19的具體意義我們可以進(jìn)入/proc/pid/fd再查看一下:

我們可以發(fā)現(xiàn),19代表的是pipe,我們這里是死在了讀pipe上面。

/************************************************/

分割線,后面再次出現(xiàn)這個(gè)問(wèn)題

我們先用ps auxf查看進(jìn)程號(hào)和進(jìn)程執(zhí)行到了哪一步,可以看到進(jìn)程號(hào)是27678,卡在docker exec

root     27678  0.3  0.4 512172 16500  Sl    python /wns/cloud/app/com_host/main.pyc
root     25011  0.0  0.0   4332   652  S      \_ /bin/sh -c docker exec -i mongo_docker_master ls
root     25014  0.0  0.2 136592 10600  Sl         \_ docker exec -i mongo_docker_master ls

繼續(xù)用strace -p 27678跟蹤

發(fā)現(xiàn)卡在read,文件描述符是14

root@localhost:/# strace -p 27678      
Process 27678 attached
read(14,

接著我們cd /proc/27678/

在這里我們可以查看進(jìn)程狀態(tài)

root@localhost:/proc/27678# cat status 
Name:	python
State:	S (sleeping)
Tgid:	27678
Ngid:	0
Pid:	27678
PPid:	27677

查看進(jìn)程的內(nèi)核堆棧的調(diào)試信息

wchan表示導(dǎo)致進(jìn)程睡眠或者等待的函數(shù)

root@localhost:/proc/27678# cat stack 
[<ffffffff811a91ab>] pipe_wait+0x6b/0x90
[<ffffffff811a9c04>] pipe_read+0x344/0x4f0
[<ffffffff811a00bf>] do_sync_read+0x7f/0xb0
[<ffffffff811a0681>] vfs_read+0xb1/0x130
[<ffffffff811a1110>] SyS_read+0x80/0xe0
[<ffffffff818d4c49>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff
root@localhost:/proc/27678# cat wchan 
pipe_wait

現(xiàn)在我們查看一下進(jìn)程打開(kāi)的文件描述符14代表什么

pipe文件

root@localhost:/proc/27678# ls -l ./fd
total 0
lr-x------ 1 root root 64 Mar 26 17:19 0 -> pipe:[30690124]
l-wx------ 1 root root 64 Mar 26 17:19 1 -> pipe:[30690125]
lrwx------ 1 root root 64 Mar 26 17:19 10 -> socket:[30691732]
lr-x------ 1 root root 64 Mar 26 17:19 11 -> /dev/urandom
lrwx------ 1 root root 64 Mar 26 17:19 12 -> socket:[30719611]
lrwx------ 1 root root 64 Mar 26 17:19 13 -> socket:[30719610]
lr-x------ 1 root root 64 Mar 26 17:19 14 -> pipe:[38483750]

我們已經(jīng)可以確定main創(chuàng)建子進(jìn)程執(zhí)行shell命令docker exec -i mongo_docker_master ls,同時(shí)通過(guò)pipe和子進(jìn)程通信,結(jié)果卡在了read pipe上。

其實(shí)在這里我們也可以使用lsof來(lái)定位

可以看到進(jìn)程27678打開(kāi)的FD 14是pipe,這里u代表可讀可寫(xiě),r代表可讀

sangfor ~ # lsof -d 14
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF     NODE NAME
mongod     1907 root   14u   REG              251,0    36864   130683 /wns/data/mongodb/db/collection-7--588642557116981989.wt
syslog-ng  3446 root   14u  unix 0xffff88012227d800      0t0 40557736 /dev/log
dockerd    4025 root   14u  unix 0xffff8800b8d5d800      0t0    13941 /run/docker/libnetwork/a73bd949b5fbb89c2b8bec3b4ac6af0a948a944958c8b037d9e6c9b324b44331.sock
docker-co  9382 root   14u  0000                0,9        0     9553 anon_inode
docker-co 21204 root   14u  0000                0,9        0     9553 anon_inode
python    27678 root   14r  FIFO                0,8      0t0 38483750 pipe

也可以直接查看進(jìn)程27678打開(kāi)的

可以看到14是pipe

sangfor ~ # lsof -p 27678
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF     NODE NAME
python  27678 root    0r  FIFO                0,8      0t0 30690124 pipe
python  27678 root    1w  FIFO                0,8      0t0 30690125 pipe
python  27678 root    2w  FIFO                0,8      0t0 30690126 pipe
python  27678 root    3u  0000                0,9        0     9553 anon_inode
python  27678 root    4u  0000                0,9        0     9553 anon_inode
python  27678 root    5u  pack           30691718      0t0  unknown type=SOCK_RAW
python  27678 root    6w   REG              251,0 76106652   130565 /wns/data/com_host/etc/config/err.log
python  27678 root    7u  IPv4           30691716      0t0      TCP Sangfor:53102->Sangfor:42457 (ESTABLISHED)
python  27678 root    8u  IPv4           30691717      0t0      TCP Sangfor:42457->Sangfor:53102 (ESTABLISHED)
python  27678 root    9u  IPv4           30691731      0t0      TCP db.sdwan:54072->sdwan.io:27017 (ESTABLISHED)
python  27678 root   10u  IPv4           30691732      0t0      TCP db.sdwan:54074->sdwan.io:27017 (ESTABLISHED)
python  27678 root   11r   CHR                1,9      0t0 30690329 /dev/urandom
python  27678 root   12u  IPv4           30719611      0t0      TCP db.sdwan:51404->db.sdwan:37017 (ESTABLISHED)
python  27678 root   13u  IPv4           30719610      0t0      TCP db.sdwan:47124->db.sdwan:27017 (ESTABLISHED)
python  27678 root   14r  FIFO                0,8      0t0 38483750 pipe

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

太湖县| 鄂托克旗| 柳江县| 灵寿县| 固镇县| 洪湖市| 泾川县| 石门县| 吉安市| 叙永县| 深圳市| 西峡县| 依安县| 买车| 共和县| 南充市| 汤阴县| 仙游县| 山东省| 栾城县| 许昌县| 孝义市| 西华县| 额济纳旗| 葵青区| 茂名市| 新营市| 晋中市| 南召县| 长春市| 澄江县| 齐齐哈尔市| 错那县| 呼和浩特市| 漳州市| 天镇县| 晋宁县| 壤塘县| 禄劝| 清流县| 揭阳市|