Java Linux 非阻塞套接字超时行为

2024-05-02

我有一个 Java 非阻塞服务器,它跟踪选择器中的所有套接字通道。然后我与服务器建立 500 个连接并定期发送数据。服务器接收到的每条数据都会回显给客户端。

问题来了,测试工作了几个小时,然后突然逐渐地,服务器管理的所有套接字在尝试读取数据时抛出连接超时 IOException。

我已经研究了客户端线程是否处于饥饿状态(并且不发送数据),但我屈服于迭代所有套接字并写出数据的客户端线程。交通似乎一直畅通无阻,但过了一会儿就完全消失了。有什么想法可能导致这种行为吗?

我正在使用最新版本的 Java 6 的 Linux 平台上运行。我的应用程序启动两个线程,一个用于服务器,另一个用于所有客户端。提前致谢!

Extra:问题是处理 Linux 而不是我的代码。当我在 Windows 机器上(在相同的硬件上)运行完全相同的设置时,它永远不会超时,但几个小时后,它们开始在 Linux 上发生。一定是 Linux 中的某种 TCP 设置导致了这种情况的发生。谢谢你的建议。


问题是处理 Linux 而不是我的代码。当我在 Windows 机器上(在相同的硬件上)运行完全相同的设置时,它永远不会超时,但几个小时后,它们开始在 Linux 上发生。一定是 Linux 中的某种 TCP 设置导致了这种情况的发生。谢谢你的建议。

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

Java Linux 非阻塞套接字超时行为 的相关文章

随机推荐

  • Pulumi Azure Pipeline 任务

    我是 Pulumi 的新手 所以目前我正在努力尝试在我的 Azure 发布管道中运行它以创建我的基础设施 在开发过程中 我使用本地存储来存储我的 pulumi 状态 pulumi login local 我已经创建了我的堆栈 dev 是其中
  • 如何使用 javascript 从 Audio Element 录制音频

    我正在使用 HTML5 和 Javascript 制作录音机 并且不想包含任何第三方 API 我的第一步是使用以下命令创建音频检索器和播放器
  • `env.BRANCH_NAME` 变为 `PR-1`

    我们使用 Jenkins 管道和 Github Multibranch 我在一个名为的功能分支上工作feature my1stfeature Jenkins 作业返回正确的分支名称 println env BRANCH NAME 回feat
  • 如何使用.clearfix类?

    我想我误解了这个概念 clearfix班级 也许有人可以帮助我 我正在寻找一种使用方法float and clear不会弄乱我的标记 所以我想 那就是那里 clearfix可以用于 在空的 H5BP 项目内部 我的标记如下所示 div di
  • DependencyProperty 值未通过数据绑定设置

    我有一堂课有一个DependencyProperty member public class SomeClass FrameworkElement public static readonly DependencyProperty Some
  • 无法使用 ijson 访问顶级元素?

    我一直在尝试用 Python 解析 JSON 文件ijson图书馆 这在查看二级元素或使用解析器时有效 但我更喜欢直接查看顶级元素的便利性 JSON 的格式基本上如下 foo a 1 b 2 bar c 3 d 4 所以 没什么特别的 我想
  • 使用 Hilt 提供 Activity 实例

    我该如何翻译这样的内容 Module abstract class BaseActivityModule a Binds abstract fun provideActivity activity A AppCompatActivity c
  • 使用 php 运行 ipconfig 命令

    我使用这段代码来了解访问者 客户 的一些信息 它一直在我的 Xampp 虚拟服务器上运行 但我无法在我的主服务器 主机 上运行 我只看到一个空白页 info system ipconfig all echo info 这可能对你有帮助 服务
  • 将solr 1.4索引升级到solr 3.3?

    我有一个使用 apache solr 1 4 构建的现有索引 我想在 3 3 版本中使用这个现有索引 正如您所知 索引格式在 3 x 之后发生了变化 那么如何才能做到这一点呢 我已经使用 Luke 将现有索引 即 1 4 版本 导出为 XM
  • “完美”的 Python 调试器具有哪些功能? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 请告诉我您希望当前的 Python 调试器具有哪些功能 我正在创建一个新的 Python IDE 调试器 并期待着具有挑战性的请求 请原谅我无耻
  • UIAutomation 嵌套辅助功能元素从层次结构中消失

    我有一个包含两个子视图 一个按钮和一个图像的视图 我打开辅助功能并在子视图上设置标签 我可以通过调用来查看层次结构 UIATarget localTarget frontMostApp mainWindow logElementTree 例
  • jQuery 中children() 或find() 哪个最快?

    要在 jQuery 中选择子节点 可以使用children 也可以使用find 例如 this children foo 给出与以下相同的结果 this find foo 现在 哪个选项最快或首选 为什么 children https ap
  • 如何在 AndroidEnvironment 构建文件的环境变量中指定下载目录的路径

    使用 Visual Studio 2022 17 2 0 Preview 1 0 我目前正在尝试创建一个 MAUI 应用程序 该应用程序已经在 Windows 上运行良好 也可以在 Android 下运行 该应用程序使用一个库 SaxonC
  • 如何使用python将列表填充为0

    我想从另一个列表中获取固定长度的列表 例如 a a b c b 0 0 0 0 0 0 0 0 0 0 我想得到一个这样的列表 a b c 0 0 0 0 0 0 0 换句话说 如果len a lt len b 我要填写清单a使用列表中的值
  • c 中的分叉和管道过程

    所以我有一个项目要做 但我完全被难住了 我花了十个小时却一无所获 我并不是特别想要答案的代码 但是一些伪代码和正确方向的良好提示将有帮助 它分叉多个进程 k 命令行参数 通过管道连接 每个进程都连接到下一个进程 最后一个进程连接到第一个进程
  • 通过 C 将线程固定到 cpuset 中的核心

    我有 cgroup cpuset set1 set1有2 5 8 我想将一个进程绑定到该 cpuset 然后将该进程中的一个线程固定到核心 4 cpuset 的名称 线程名称以及我应该将线程绑定到的核心位于 m 配置文件中 是否有任何 C
  • 可变参数模板

    我看过很多介绍可变参数模板的链接 但我从未见过任何可编译的示例来演示这种方法 有人可以给我提供一些可以找到此类可编译示例的链接吗 最简单的示例之一是以下实现max它甚至没有在类型上进行模板化 int maximum int n return
  • 运行时异常无法在未调用 Looper.prepare 的线程内创建处理程序错误

    我正在尝试上传带有其他一些 EditText 的照片 我从在线示例中获取了示例代码并对其进行了一些编辑 但是 我收到此错误 08 29 21 36 46 000 E AndroidRuntime 4566 FATAL EXCEPTION A
  • TypeError:req.checkBody 不是包含 bodyparser 和expressvalidator 模块的函数

    我收到错误 req checkBody 不是一个函数 我认为我已经包含了express validator和body parser 这是我的代码 var express require express var bodyParser requ
  • Java Linux 非阻塞套接字超时行为

    我有一个 Java 非阻塞服务器 它跟踪选择器中的所有套接字通道 然后我与服务器建立 500 个连接并定期发送数据 服务器接收到的每条数据都会回显给客户端 问题来了 测试工作了几个小时 然后突然逐渐地 服务器管理的所有套接字在尝试读取数据时