AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 765382
Accepted
Alien Life Form
Alien Life Form
Asked: 2016-03-23 09:17:18 +0800 CST2016-03-23 09:17:18 +0800 CST 2016-03-23 09:17:18 +0800 CST

snmpd 变得无响应(Centos 6)

  • 772

在过去的几天里,我正在监视的 Centos 6.7 邮件服务器在 snmp 查询上不断超时。在行为改变之前的那段时间里,服务器没有发生任何变化(我知道......),所以我倾向于责怪环境中的“某些东西”。

如果我重新启动守护程序,它将再次响应几分钟(最多几个小时),然后它将再次开始超时。对于从机器本身运行的查询也会发生这种情况,如

# snmpstatus -v1 -c public localhost

(所以图片中没有网络问题)。我在 dmesg 中没有什么值得注意的,我在 /var/log/messages 中可以看到的唯一东西——不是普通的 snmp 连接跟踪——是偶尔的:

Mar 22 17:34:53 turnip snmpd[31053]: read:Interrupted system call

出现与我重新启动守护程序有关的行。

我试图 strace snmpd 并且我可以看到它在似乎是一个选择/接收循环中等待 - 当无响应时,它永远不会离开那里并且它不会在日志中写入任何内容 - 就好像数据包没有传递到守护进程。但是重启机器没有效果。

同样无效的是试图调整打开文件限制并调查其他可能的资源限制 - 更不用说机器本身并没有特别强调。所以我目前没有线索。

如果需要,我可以发布 snmpd.conf。

TIA 和欢呼

编辑:这是跟踪循环的样子(当无响应时):

select(15, [14], NULL, NULL, {0, 27618}) = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
centos
  • 1 1 个回答
  • 1409 Views

1 个回答

  • Voted
  1. Best Answer
    Alien Life Form
    2016-03-24T02:37:26+08:002016-03-24T02:37:26+08:00

    事实证明,我的 snmpd 守护程序运行了许多(shell)命令 - 在 snmpd.conf 的可扩展部分中指定。其中之一(原因尚未确定)开始时不时地变得楔入。愚蠢的 snmpd 守护进程在读取该命令时卡住了,整个 shebang 都超时了。

    我发现的方式可能很有趣。

    1)找到snmpd的pid:

    #pidof snmpd
    124567
    

    2)追踪它:

    # strace -p124567
    select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
    select(15, [14], NULL, NULL, {1, 0})    = 0 (Timeout)
    

    3) 14 是 snmpd 卡住的文件描述符。现在找到它的inode:

    # ls -l /proc/1124567/fd
    total 0
    lrwx------ 1 root root 64 Mar 23 10:41 0 -> /dev/null
    lrwx------ 1 root root 64 Mar 23 10:41 1 -> /dev/null
    [...]
    lr-x------ 1 root root 64 Mar 23 10:41 14 -> pipe:[6200340]
    

    4) 现在找到由 inode 6200340 标识的管道另一端的进程。这个脚本 - 以 inode 作为参数调用 - 可用于以下目的:

    #!/bin/bash
    
    for i in /proc/*/fd; do 
        found=$(ls -l $i| fgrep $1)
        if [[ x$found != x ]]; then
        pid=$(basename $(dirname $i))
        name=$(ps -p $pid -o comm=)
        echo "$name ($pid)"
        fi
    done 
    
    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve