当前位置: 首页 > 面试题库 >

Java的“ tnameserv”需要3分钟以上的时间才能“就绪”,为什么?

段干飞翔
2023-03-14
问题内容

我正在尝试帮助我想使用麻烦的应用程序开发人员利用Linux上的Corba
Server解决问题。我将问题缩小tnameserv到调用后需要3分钟以上的时间才能准备好。

tnameserv在那三分钟内到底想做什么,无论如何我可以加快速度吗?该应用失败,因为它尝试进行5次连接尝试,两次重试之间间隔1秒;这显然不能给tnameserv足够的时间准备就绪。我在Slackware
13.0上使用Java 6u17

以防万一。的实际调用tnameserv如下:

tnameserv -ORBInitialPort 23423

在外壳中运行该命令后,它似乎一直挂着直到3分钟左右,直到我最终看到它显示为“就绪”。

更新

我做了一个strace -f tnameserv -ORBInitialPort 23423,我看到了对gettimeofday(),clock_gettime()和futex()的大量调用,后者总是返回’-1
ETIMEDOUT(连接超时)。我感觉这与我的问题有关,但我不知道如何或为什么。

这只是我从strace看到的一小部分。有人可以复制和/或理解吗?

[pid 30950] futex(0x8128e14,FUTEX_WAIT_PRIVATE,1,{0,49903084})= -1 ETIMEDOUT(连接超时)
[pid 30950] futex(0x8098a28,FUTEX_WAKE_PRIVATE,1)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329619,995857482})= 0
[pid 30950] gettimeofday({1260930158,92108},NULL)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329619,995996617})= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329619,996088536})= 0
[pid 30950] gettimeofday({1260930158,92328},NULL)= 0
[pid 30950] clock_gettime(CLOCK_REALTIME,{1260930158,92424295})= 0
[pid 30950] futex(0x8128e14,FUTEX_WAIT_PRIVATE,1,{0,49903705})= -1 ETIMEDOUT(连接超时)
[pid 30950] futex(0x8098a28,FUTEX_WAKE_PRIVATE,1)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,46761098})= 0
[pid 30950] gettimeofday({1260930158,143084},NULL)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,46913924})= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,47006961})= 0
[pid 30950] gettimeofday({1260930158,143303},NULL)= 0
[pid 30950] clock_gettime(CLOCK_REALTIME,{1260930158,143398317})= 0
[pid 30950] futex(0x8128e14,FUTEX_WAIT_PRIVATE,1,{0,49904683})= -1 ETIMEDOUT(连接超时)
[pid 30950] futex(0x8098a28,FUTEX_WAKE_PRIVATE,1)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,97818379})= 0
[pid 30950] gettimeofday({1260930158,194127},NULL)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,97957235})= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,98049154})= 0
[pid 30950] gettimeofday({1260930158,194346},NULL)= 0
[pid 30950] clock_gettime(CLOCK_REALTIME,{1260930158,194441349})= 0
[pid 30950] futex(0x8128e14,FUTEX_WAIT_PRIVATE,1,{0,49904651})= -1 ETIMEDOUT(连接超时)
[pid 30950] futex(0x8098a28,FUTEX_WAKE_PRIVATE,1)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,148806370})= 0
[pid 30950] gettimeofday({1260930158,245055},NULL)= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,148947182})= 0
[pid 30950] clock_gettime(CLOCK_MONOTONIC,{329620,148981547})= 0
[pid 30950] gettimeofday({1260930158,245280},NULL)= 0
[pid 30950] clock_gettime(CLOCK_REALTIME,{1260930158,245374859})= 0
[pid 30950] futex(0x8128e14,FUTEX_WAIT_PRIVATE,1,{0,49905141})= -1 ETIMEDOUT(连接超时)

问题答案:

原来问题是防火墙问题。Wireshark没有显示任何有用的信息,因为防火墙正在丢弃某个数据包。尽管我多次查看防火墙日志以确保情况并非如此,但事实证明,我没有找到正确的位置。我忽略了这个“
tnameserv”可以识别IPv6的事实(因为它绑定到:::
23423),而我的防火墙脚本的粗略浏览显示我将与IPv6相关的数据包记录到了与IPv4数据包不同的位置。这不是疏忽,而是必须这样做,因为ip6tables当前不支持-j
ULOG目标。

长话短说,允许对IPv6进行环回修复了该问题,“ tnameserv”几乎立即返回“就绪”。



 类似资料:
  • 在为kubernetes吊舱做健康检查的时候,为什么在我们已经保持了准备状态探测器的情况下还需要活性探测器呢? Readision probe已经在检查pod中的应用程序是否准备好为请求提供服务,这意味着pod是活动的。但是,为什么要进行活性探测呢?

  • 本文向大家介绍为什么HTML5只需要写就可以?相关面试题,主要包含被问及为什么HTML5只需要写就可以?时的应答技巧和注意事项,需要的朋友参考一下 HTML5 之前基于 SGML, SGML 需要指定 DTD 解析文档, 可通过<!DOCTYPE>指定要使用的 DTD, 若不写则会进入怪异模式; HTML5 不基于 SGML, 不需要指明 DTD, 其<!DOCTYPE>只有一种: .

  • 问题内容: 我正在使用Hibernate 4.2,JPA 2.0和Postgres 9.2 代码卡在 在进一步调查中,我发现Hibernate调用了class 方法。此方法尝试加载有关每个数据库对象的元数据 的代码是Postgers的JDBC驱动程序的一部分,而确实是花费时间来执行该方法的驱动程序(我加载了驱动程序源并尝试了跟踪)。但是由于这个问题在Hibernate 3.3(我之前使用过)中没有

  • 问题内容: 我认为这个问题已经存在,但是我找不到。 我不明白,为什么必须要有一个功能接口才能使用lambda。考虑以下示例: 这可以正常工作,但是如果您取消注释行,则不会。为什么?以我的理解,编译器应该能够区分这两种方法,因为它们具有不同的输入参数。为什么我需要一个功能接口并炸毁我的代码? 编辑:链接的重复项没有回答我的问题,因为我在询问不同的方法参数。但是在这里,我得到了一些非常有用的答案,这要

  • 因此,我一直在Android Studio中开发一个简单的应用程序,从过去几天开始,每当我点击“运行”,就需要5分钟以上的时间来构建。以前可没这么慢。我不知道为什么。它说“Gradle构建运行”,然后应用程序在5分钟后加载。这种情况发生在模拟器和我的android设备上。我的年级版本是2.10,我查了这个问题,我尝试了其他类似帖子建议的一切,包括: 向命令行选项设置添加--并行和--脱机 在分级设

  • 问题内容: 我正在一个数据库很大的网站上工作。当时表中有1百万条记录。当我执行查询时,这将花费太多时间来执行。以下是一个示例查询: 每个查询都需要一分钟以上的时间,但是当我将表放到1万条记录中时,该查询就会快速执行。 正如我所读过的,在一个表中有一百万条记录没有问题,因为在数据库表中没有大记录的问题。 我已经通过堆栈溢出问题在表中使用了ID索引, 如何向MySQL表添加索引? ,但仍然有同样的问题