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 / 问题 / 10050
Accepted
Taylor Leese
Taylor Leese
Asked: 2009-05-20 11:04:14 +0800 CST2009-05-20 11:04:14 +0800 CST 2009-05-20 11:04:14 +0800 CST

vmstat -f 显示大量分叉

  • 772

我有一个生产服务器,它在运行时显示了大量的分叉vmstat -f。关于可用于帮助找出叉子起源的步骤的任何建议?

vmstat -f 1
      6650796 forks

编辑:

[~]$ ./forks.sh 
Forks in last 2 seconds: 20 
Forks in last 2 seconds: 40 
Forks in last 2 seconds: 58 
Forks in last 2 seconds: 9 
Forks in last 2 seconds: 6 
Forks in last 2 seconds: 28 
Forks in last 2 seconds: 8 
Forks in last 2 seconds: 10 
Forks in last 2 seconds: 15 
Forks in last 2 seconds: 9
linux vmstat
  • 5 5 个回答
  • 6299 Views

5 个回答

  • Voted
  1. Best Answer
    MarkR
    2009-05-20T13:33:59+08:002009-05-20T13:33:59+08:00

    根据手册页,它包括对 fork、vfork 或 clone 的所有调用。Java 使用这三个(克隆)中的最后一个来实现其线程

    因此,每次您的 Java 服务器创建一个新线程时,该值都会增加。

    如果它不会变得愚蠢,它应该没问题。你平均每秒看到多少个?

    • 5
  2. Luke
    2009-05-20T11:09:06+08:002009-05-20T11:09:06+08:00

    任何产生另一个进程但自身没有终止的进程都是一个分叉——例如,在 shell 中执行的每个命令都将被算作一个分叉。自系统启动以来,非常多的 fork 调用是完全正常的。

    • 1
  3. jj33
    2009-05-20T11:59:44+08:002009-05-20T11:59:44+08:00

    首先要注意的是,在没有两个时间参数的情况下运行 vmstat 会显示自上次重新启动以来的累积值。您必须多次运行它才能获得“每秒分叉”数字,以查看它是否真的是一个大数字。像这样的东西(显然可以制作成更友好的脚本):

    g3 0 /home/jj33 ># while true
    > do
    >   vmstat -f
    >   sleep 15
    > done
           278039 forks
           278044 forks
           278047 forks
           278051 forks
    

    因此,该系统在 3 个 15 秒的间隔内进行了 5、3 和 4 次分叉,考虑到 *nix 机器上的每个进程调用都涉及一个分叉,这似乎不是一个大数字。

    • 1
  4. Tim
    2009-05-20T12:30:02+08:002009-05-20T12:30:02+08:00

    高叉数真的不是问题——我已经运行基于 Gentoo 的路由器几个月了,我的叉数是你的两倍多,但机器本身是坚如磐石的。

    dijkstra ~ # vmstat -f 1
         14623947 forks
    dijkstra ~ # uptime
     15:29:26 up 291 days, 14:02,  1 user,  load average: 0.02, 0.04, 0.07
    • 0
  5. eckes
    2009-05-28T18:17:01+08:002009-05-28T18:17:01+08:00

    如果您怀疑某个进程(如 JVM)是​​导致分叉计数高的原因(2/s 并不高而且不是问题),您可以使用 strace/ltrace 来查看它在做什么。

    特别是 fork 也应该在使用 accton 命令的进程记帐(更高的影响)中可见。但我认为它不包括用于启动线程的 clone() 。

    如果你进入 100 克隆/秒的范围,那么你真的应该看看这个应用程序。

    顺便说一句:关于上面的评论(还不能评论):没有Tomcat不分叉,它只启动线程,但不是针对每个请求,它使用一个池。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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