Java 定期挂在 futex 且 IO 输出非常低

2024-06-18

目前我的应用程序周期性地阻塞IO,并且输出非常低。我使用一些命令来跟踪该过程。

通过使用jstack我发现该应用程序挂在 FileOutputStream.writeBytes 处。

通过使用strace -f -c -p pid为了收集系统调用信息,我发现了这一点。对于正常情况,它同时具有 futex 和 write 系统调用。但是当它变得不正常时,只有 futex 系统调用。应用程序不断调用 futex 但都失败并抛出 ETIMEDOUT,就像这样:

<futex resumed>  =-1 ETIMEDOUT (Connecton timed out)
futex(Ox7f823, FUTEX_WAKE_PRIVATE,1)=0
futex(Ox7f824, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME) =-1<unfinished>
<futex resumed>  =-1 ETIMEDOUT (Connecton timed out)
futex(Ox7f823, FUTEX_WAKE_PRIVATE,1)=0
futex(Ox7f824, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME) =-1<unfinished>

此问题定期发生,持续几分钟或几小时,然后又恢复正常。

特别是当IO阻塞时,echo 3 > /proc/sys/vm/drop_caches总是让它暂时恢复正常。 我用谷歌搜索了一下,发现了一些类似的问题,如下所示。

  1. 闰秒。不行,我们系统的ntpd被停止了。
  2. 透明大页错误。https://bugzilla.redhat.com/show_bug.cgi?id=879801 https://bugzilla.redhat.com/show_bug.cgi?id=879801这与我的问题非常相似,但我的 khugepaged 进程正常,并且负载始终接近于零。埃斯皮利删除缓存也适用于我的应用程序。而且我的系统也是多核大内存的。这对我不起作用。 那么有人遇到过同样的问题或熟悉这个问题吗?

有关我的系统的一些信息。 操作系统:Redhat 6.1,内核版本2.6.31

JDK:1.7.0_05

CPU:X5650,24核

内存:24GB 和 48GB


也许是 futex_wait() 中的内核错误?

你可以在这里读到它:https://groups.google.com/forum/#!topic/mechanical-sympathy/QbmpZxp6C64 https://groups.google.com/forum/#!topic/mechanical-sympathy/QbmpZxp6C64

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 定期挂在 futex 且 IO 输出非常低 的相关文章

随机推荐

  • 在android 10中设置通知操作的背景颜色

    我已经做到了这一点图片链接 https i stack imgur com o0Cel jpg通过关注这篇文章https medium com dcostalloyd90 show incoming voip call notificati
  • 更改所选控件的输入语言

    我的应用程序中有一个文本区域 我想以编程方式单独设置文本区域的输入语言 而不影响其他控件 不幸的是 您的程序无法完成此操作 用户需要使用 Unicode 键盘或输入法编辑器 IME 由于您使用的是 C Net 平台 因此您的程序已经能够处理
  • C 有标准的队列实现吗?

    是否有 C 语言 附带 的队列数据结构实现 或者我必须开发自己的队列数据结构实现 这是一个学校项目 因此我必须使用标准 gcc 安装中存在的东西 或者必须自己实现一个 其他通用数据结构 如链表 堆栈等 又如何呢 尝试这个 Unix 附带了几
  • 为什么 Javascript 中未定义的变量有时会计算为 false,有时会抛出未捕获的 ReferenceError?

    我读过的所有内容都表明 在 Javascript 中 未定义变量的布尔值是 False 我已经使用过这样的代码数百次 if elem 其目的是 如果 elem 未定义 则将执行块中的代码 它通常可以工作 但有时浏览器会抛出一个错误 抱怨未定
  • 无法使用 CLI Firebase auth:import 命令导入用户帐户

    我需要在 Firebase 中导入用户列表以及电子邮件和密码 我正在尝试使用 CLI auth import 命令在 Firebase 中导入用户 https firebase google com docs cli auth import
  • 有没有办法将 SVG 字符串渲染到 Web Worker 中的 OffscreenCanvas?

    我正在开发一个网页 对 SVG 字符串数据进行一些相当繁重的处理 因为这些字符串的大小可能达到 m bs 所以我想将 SVG 的渲染 取决于浏览器 移至工作人员 以避免阻塞 UI 我的问题是 worker 中无法访问 DOM 元素 有没有办
  • 从 MVC 控制器调用 Web API

    我的 MVC 5 项目解决方案中有一个 Web API 控制器 WebAPI 有一个方法可以将特定文件夹中的所有文件作为 Json 列表返回 name file1 zip path c 从我的 HomeController 我想调用这个方法
  • 使用自制程序和安装程序安装 gfortran 是否会产生冲突?

    我正在按照在线教程使用 homebrew 安装一些 Python 模块 其中一个步骤是安装 gfortranbrew install gfortran 后来 我尝试使用另一个第三方安装脚本来安装一些Python模块 之后我意识到该脚本所做的
  • 使用 RSpec 测试导轨金属/机架?

    假设我有一个名为 Preview 的 Metal 类 如何使用 RSpec 进行测试 当我尝试时 require spec helper describe Preview do it should return the posted con
  • GLSurfaceView onDrawFrame 清除行为

    我在使用 GLSurfaceView 时遇到了不同的行为 据我所知 程序有责任清除每帧的缓冲区 颜色和深度 这意味着 如果我不清除缓冲区 我将获得最后一帧的内容 或双缓冲的前一帧 似乎无论在某些设备上如何 缓冲区都会被清除 我在一些测试设备
  • Swift 仅删除字符串中的尾随空格

    SO 中的许多示例都固定两侧 即前导和尾随 我的要求只是关于尾随 我的输入文本是 保持我的左侧 期望的输出 保持我的左侧 当然 这个命令会删除两端 let cleansed messageText trimmingCharacters in
  • IClaimsTransformation 未被调用

    我正在开发 ASP NET Core Web 应用程序 NET 5 0 这是一个 Intranet 应用程序 因此我使用 Windows 身份验证 对于授权 我使用 AspNetCore Identity 中的自定义角色 出于各种原因不想使
  • 在 Java 中复制文件的最快方法

    在 Java 中复制大量文件的最快方法是什么 到目前为止我已经使用了文件流和nio 总体来说流似乎比 nio 更快 到目前为止 你有哪些经历 http www baptiste wicht com 2010 08 file copy in
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • Xcode 4.6.3 中 Dropbox API 的代码设计失败:“代码对象根本没有签名”

    我有一个通过 Mac App Store 分发的 OS X 应用程序 最近更新到 Xcode 4 6 3 当我现在运行常规构建时 我收到 Command usr bin codesign failed with exit code 1 Us
  • Browserify 的自定义依赖项名称不起作用

    我正在尝试让 browserify 的自定义依赖项名称与内存流一起使用 我使用内存流的原因是因为此代码注定要在 AWS Lambda 内部运行 该 AWS Lambda 将接收多个 文件 作为输入 并且 Lambda 无法通过文件系统使用该
  • 自定义相机预览问题(拉伸)

    我的相机应用程序出现问题 我的应用程序有 1 CameraActivity class和 2 CameraPreview class CameraPreview实施一个surfaceView它是从哪里调用的CameraActivity以进行
  • jenkins:使用 URL 传递多个“扩展选择参数”值

    我的参数之一Jenkins构建是一个扩展选择参数 https wiki jenkins ci org display JENKINS Extended Choice Parameter plugin从构建网页调用构建时 它作为逗号分隔值的选
  • 如何在 Swift Playground 中使用 Carthage 导入的框架

    我有一个快速项目 其中通过迦太基添加了一些框架 是否可以在项目内部的游乐场中使用这些框架以及如何使用它 因为 import Argo 不起作用 这在某个时候停止工作了 叹 我现在做的是 创建 macOS gt 命令行工具 创建一个购物车文件
  • Java 定期挂在 futex 且 IO 输出非常低

    目前我的应用程序周期性地阻塞IO 并且输出非常低 我使用一些命令来跟踪该过程 通过使用jstack我发现该应用程序挂在 FileOutputStream writeBytes 处 通过使用strace f c p pid为了收集系统调用信息