首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
V2EX  ›  Linux

一个让人尴尬癌犯了的问题,数不清的僵尸 sshd 进程

  •  
  •   zwpaper · 2017-01-03 22:10:28 +08:00用 iPhone 发布 · 6082 次点击
    这是一个创建于 873 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天真是长见识了,一台服务器上面突然发现上万个僵尸进程,大部分是 sshd ,现在还能登陆上去,但是运行的程序有的又会变僵尸……

    /var/log/ 下面也没什么 log 输出

    Google 出来的结果都让重启机器……

    我有点不知所措了
    41 回复  |  直到 2017-06-07 18:28:02 +08:00
        1
    pagxir   2017-01-03 22:15:23 +08:00
    父进程状态异常了吧,估计被暂停了。
        2
    zwpaper   2017-01-03 23:26:00 +08:00
    @pagxir 找不到父进程了,现在好像都被挂到 init 下面了,现在 kill 也 kill 不掉,然后僵尸进程数还在增加
        3
    k9982874   2017-01-03 23:32:36 +08:00 via iPhone
    猜是谁写了个 sshd 自动执行脚步互锁了?
        4
    zwpaper   2017-01-03 23:55:19 +08:00
    @k9982874 主要是没有 log ,无从下手有点尴尬,明天去公司还得再战这个问题
        5
    solrted   2017-01-04 00:43:37 +08:00 via Android
    @zwpaper lsof -p pid
        6
    qceytzn   2017-01-04 03:18:29 +08:00
    @solrted lsof: illegal process ID: pid
        7
    lslqtz   2017-01-04 04:17:21 +08:00 via iPhone
    kill 后又复活?
    试试看多执行几次 killall
        8
    lslqtz   2017-01-04 04:18:13 +08:00 via iPhone
    对于 CentOS 来说:
    service sshd stop
    killall sshd
    然后进一步排查问题(?) 或许很怪查不出
        9
    ryd994   2017-01-04 09:20:21 +08:00
    是用了 docker 里的 sshd 么?
    如果是的话,不要直接启动 sshd ,用 sh 之类的间接启动
        10
    zwpaper   2017-01-04 10:55:18 +08:00
    @qceytzn 基本上 lsof -p 输出都是空的
        11
    zwpaper   2017-01-04 10:59:07 +08:00
    @lslqtz killall 不起作用,返回是 0 ,但是进程数一点没少, killall sshd 把我自己踢出去了,再进来还是一样的
        12
    zwpaper   2017-01-04 10:59:38 +08:00
    @ryd994 貌似没有用 docker
        13
    MartinWu   2017-01-04 11:06:47 +08:00
    同病相怜。。。
        14
    anjingme   2017-01-04 11:07:48 +08:00
    重启下 sshd 看看,当然重启失败了,自己也会被踢出来,搞个 nc 开个口子先再重启。
        15
    MartinWu   2017-01-04 11:07:58 +08:00
    千万别去重启 sshd 啊。。。。
        16
    MartinWu   2017-01-04 11:12:57 +08:00
    我的情况是,表面跟楼主描述的大致相同。最后放弃治疗,打算把上面的业务迁移到其他机器,就重启了。但是把业务都迁移走了后,突然发现,所有的僵尸都没了。然而我并没有追踪到是哪个进程关闭后,就把僵尸都埋了。

    而我现在只追查到,发现 ssh 僵尸都是 sshd 这个用户的,而这个僵尸应该就是 sshd fork 出来负责验证权限的子进程。
        17
    lslqtz   2017-01-04 11:15:18 +08:00 via iPhone
    @MartinWu 我以为楼主是在机房...
        18
    zwpaper   2017-01-04 13:17:30 +08:00
    @MartinWu 我现在是我 sshd 退出来了,还能再登进去,只是不知道哪天 pid 要被用完了就上不去了

    现在好像我运行一个后台程序,再退出 bash ,后台程序就变僵尸了
        19
    zwpaper   2017-01-04 13:18:45 +08:00
    @lslqtz 😳 我现在 service xxx 直接都是 timeout 了。。。
    想把我堵 ssh 外面都不行。。。
        20
    zwpaper   2017-01-04 13:19:40 +08:00
    @MartinWu 我基本放弃治疗了。。。但是这个问题感觉有点意思呢
        21
    w2exzz   2017-01-04 13:31:23 +08:00
    chkconfig --level35 sshd off
    reboot

    /usr/sbin/sshd -d
        22
    MartinWu   2017-01-04 13:59:37 +08:00 via iPhone
    @zwpaper 对,就是这样的状况。
        23
    zwpaper   2017-01-04 14:17:15 +08:00
    @w2exzz 现在重启很大可能可以解决问题,但是一个是不希望重启,一个是希望保存现场,研究一下问题到底在哪里。
    所以暂时还不 reboot
        24
    MartinWu   2017-01-04 15:26:05 +08:00
    @zwpaper 能否看下 kernel 的日志有没有什么信息? 或者 /proc/里
        25
    MartinWu   2017-01-04 15:28:40 +08:00
    @zwpaper 在不影响业务的基础上,继续摸索下吧,在线等更新。我现在就后悔去重启了。。
        26
    jyf007   2017-01-04 19:44:05 +08:00 via Android
    dropbear
        27
    zwpaper   2017-01-05 00:02:22 +08:00
    @MartinWu 现在发现了一个问题就是 systemd hung 住了,感觉有可能问题出在这个地方。

    今天还找到一个说是 210 以前的 systemd 有 bug ,有可能会让 systemd hung 住,但是我的机器上的好像是 213 的,按说不应该。具体版本号我忘了,后来忙别的去了,可以肯定的是比 210 新。
    在这看到的: https://bbs.archlinux.org/viewtopic.php?id=178168

    现在 /var/log 基本上没有新写入东西了, rsyslog 也在一次失败的实验中变僵尸了。。。

    现在新发现是 journalctl 里有不少 log ,这个没来得及看,明天看看有没有空看一下。

    别在线等啊,我还有个活背着呢,你要有什么想法也可以告诉我,我来试试,再给你反馈结果😳
        28
    zwpaper   2017-01-05 00:05:04 +08:00
    @MartinWu kernel 的日志你说的是哪个位置?/proc/ 没找到比较特别的地方呢,就是僵尸的 proc stat 都是 Z , ppid 都是 1
        29
    zwpaper   2017-01-05 00:12:21 +08:00
    @jyf007 这是一个 ssh 工具?恕在下愚钝,没想到用法啊。。。
    不过 Matt Johnston ,这个名字有点印象,好像这两天有搜到他报类似的 bug
        30
    jyf007   2017-01-05 13:31:12 +08:00 via Android
    @zwpaper 不,我是说换成这种路由器用到的,再装个 openssh-sftp-server 就行了
        31
    zwpaper   2017-01-21 21:04:34 +08:00 via iPhone
    @MartinWu 突然想起来,这个貌似有人去 centOS 报 bug 了,看看官方怎么回复吧
        32
    MartinWu   2017-01-21 22:29:41 +08:00 via iPhone
    @zwpaper 啊咧?我去看看。
        33
    zwpaper   2017-01-21 23:20:08 +08:00
        34
    MartinWu   2017-02-04 19:50:31 +08:00
    @zwpaper 我的是 centos6 诶,貌似不是 systemd 导致的,而且 centos6 还是用 initd 的。。
        35
    zwpaper   2017-02-05 00:17:02 +08:00
    @MartinWu #34 这就奇怪了,我倒确实是 7 的,所以这个 systemd 的问题感觉还挺像的
        36
    okudayukiko0   2017-02-16 04:18:02 +08:00 via iPhone
    不用 SSH ,改用串口 /VirtIO Console 或远程卡试试,不排除病毒
        37
    zwpaper   2017-02-16 09:49:22 +08:00 via iPhone
    @okudayukiko0 机器在机房,而且也已经重启了,病毒的话,也没有查到一些相关的说法……
        38
    MartinWu   2017-06-06 10:08:33 +08:00
    我发现了一个点,可使用内存太少,导致 init 无法 fork 出线程来回收僵尸进程。
        39
    zwpaper   2017-06-07 00:02:21 +08:00
    @MartinWu #38 可惜没有环境了啊。。。。
        40
    MartinWu   2017-06-07 17:10:07 +08:00
    @zwpaper 哈哈哈,等下次吧。 😂
        41
    zwpaper   2017-06-07 18:28:02 +08:00
    @MartinWu #40 这个是最尴尬的 😂
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   831 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 18:59 · PVG 02:59 · LAX 11:59 · JFK 14:59
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1