日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 用strace查找進程卡死原因
    • 首先我們用ps auxf
    • 然后我們進一步通過
    • 這里可以看到死在了系統回調read這里
    • 分割線,后面再次出現這個問題
    • 繼續用strace -p 27678跟蹤
    • 接著我們cd /proc/27678/
    • 查看進程的內核堆棧的調試信息
    • 現在我們查看一下進程打開的文件描述符14代表什么
    • 其實在這里我們也可以使用lsof來定位
    • 也可以直接查看進程27678打開的
  • 總結

    用strace查找進程卡死原因

    最近遇到進程卡死的情況,但是自己調試的過程中并不一定能復現,都是需要運行一段時間某些條件下才會觸發,對于這種運行著不能破壞現場的情況,我們可以使用gdb -p和strace -p來跟蹤。

    首先我們用ps auxf

    查看我們的進程執行到了哪一步:

    用strace查找進程卡死的原因分析

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

    然后我們進一步通過

    strace查看執行這個操作死在哪個系統回調了:

    用strace查找進程卡死的原因分析

    這里可以看到死在了系統回調read這里

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

    用strace查找進程卡死的原因分析

    我們可以發現,19代表的是pipe,我們這里是死在了讀pipe上面。

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

    分割線,后面再次出現這個問題

    我們先用ps auxf查看進程號和進程執行到了哪一步,可以看到進程號是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

    繼續用strace -p 27678跟蹤

    發現卡在read,文件描述符是14

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

    接著我們cd /proc/27678/

    在這里我們可以查看進程狀態

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

    查看進程的內核堆棧的調試信息

    wchan表示導致進程睡眠或者等待的函數

    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

    現在我們查看一下進程打開的文件描述符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]

    我們已經可以確定main創建子進程執行shell命令docker exec -i mongo_docker_master ls,同時通過pipe和子進程通信,結果卡在了read pipe上。

    其實在這里我們也可以使用lsof來定位

    可以看到進程27678打開的FD 14是pipe,這里u代表可讀可寫,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

    也可以直接查看進程27678打開的

    可以看到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

    總結

    以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

    分享到:
    標簽:分析 原因 服務器 查找 進程
    用戶無頭像

    網友整理

    注冊時間:

    網站:5 個   小程序:0 個  文章:12 篇

    • 51998

      網站

    • 12

      小程序

    • 1030137

      文章

    • 747

      會員

    趕快注冊賬號,推廣您的網站吧!
    最新入駐小程序

    數獨大挑戰2018-06-03

    數獨一種數學游戲,玩家需要根據9

    答題星2018-06-03

    您可以通過答題星輕松地創建試卷

    全階人生考試2018-06-03

    各種考試題,題庫,初中,高中,大學四六

    運動步數有氧達人2018-06-03

    記錄運動步數,積累氧氣值。還可偷

    每日養生app2018-06-03

    每日養生,天天健康

    體育訓練成績評定2018-06-03

    通用課目體育訓練成績評定