问题标签 [latency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1757 浏览

ruby-on-rails - 如何检查 HTTP 请求延迟/等待时间的原因?

我向我的服务器发出一个简单的 GET 请求,它平均在大约 1.2 秒后返回(使用 firebug NET 选项卡,“等待 reqponse”部分 - 甚至不是整个响应时间)

我对服务器的 ping 是 0.250

使用带有 rails 2.3.3 的乘客,在 rails 日志中,请求占用 ~0.023

我的服务器在 GoDaddy 上,所以我也用 firebug 检查了他们的主页——他们页面的“等待 reqponse”时间约为 0.320

最坏的情况应该是 0.4 左右......那么我在哪里失去了另外的 0.8 秒?

我还能检查什么?

编辑:

似乎它与 Rails 无关 - 图像请求(只有 apache 响应,根本没有碰到 Rails)也需要约 1.2 秒

0 投票
3 回答
1698 浏览

client-server - 使用时间戳验证位置差异时如何考虑延迟差异(防作弊)?

当您在多人游戏中服务器从客户端接收移动(位置)信息时,您希望验证此信息作为反作弊措施。

这可以这样做:

这是一个简单的例子,只考虑了 X 坐标。这里的问题是,一旦服务器收到最后的位置更新,就会存储 oldTimestamp 。这意味着,如果当时有延迟峰值,则旧时间戳将比服务器接收到的新位置更新晚得多。这意味着时差将不准确。

例子:

  1. 客户说:我现在在位置 5x10
  2. 滞后峰值:服务器在时间戳 500 收到此消息(它通常应该在 30 时到达)
  3. ....1 秒动作...
  4. 客户说:我现在在 20x15 的位置
  5. 无延迟峰值:服务器在时间戳 1530 处接收消息

服务器现在会认为这两个位置的时间差是1030,但是实际的时间差是1500。这可能会导致反作弊检测认为1030不够长,从而踢掉客户端。

可能的解决方案:让客户端在发送时发送时间戳,以便服务器可以使用这些时间戳代替

问题:这个解决方案的问题是玩家可以操纵客户端发送一个不合法的时间戳,所以反作弊系统不会启动。这不是一个好的解决方案。

也可以简单地允许 maxPlayerSpeed * 2 速度(例如),但是这基本上允许速度达到正常速度的两倍。这也不是一个好的解决方案。

那么:您对如何解决这个“服务器时间戳和延迟”问题有什么建议,以使我的反作弊措施值得吗?

0 投票
5 回答
601 浏览

java - 分配延迟似乎很高,为什么?

我有一个在低延迟环境中运行的(java)应用程序,它通常处理约 600 微秒(+/- 100)的指令。自然地,随着我们进一步进入微秒空间,您会看到成本延迟发生变化的事情,现在我们注意到 2/3 的时间花在了 2 个核心域对象的分配上。

基准测试已将有问题的代码部分从现有引用中分离出来,即从字面上构建对象,即基本上是大量引用(每个类中约 15 个)和几个新列表,尽管请参阅下面的注释以了解准确测量的内容这里。

每个人始终需要〜100micros,这对我来说是莫名其妙的,我正试图找出原因。一个快速的基准测试表明,一个类似大小的充满字符串的对象大约需要 2-3 微秒才能新建,显然这种基准测试充满了困难,但认为它可能作为基准有用。

这里有2个Q

  • 如何调查这种行为?
  • 分配缓慢有什么解释?

请注意,所涉及的硬件是 Sun X4600 上的 Solaris 10 x86,具有 8 个双核 opterons @ 3.2GHz

我们看过的东西包括

  • 检查 PrintTLAB 统计信息,显示 v 几个缓慢的分配,所以那里不应该有争用。
  • PrintCompilation 表明其中一段代码不是 JIT 友好的,尽管 Solaris 在这里似乎有一些不寻常的行为(即与现代 linux 相比,现在没有与 solaris10 类似的老式 linux 可供使用)
  • 日志编译...至少可以说有点难以解析,所以这是一项持续的工作,到目前为止还没有什么明显的
  • JVM 版本... 6u6 和 6u14 一致,尚未尝试 6u18 或最新 7

任何和所有想法表示赞赏

对各种帖子的评论摘要,以尝试使事情更清晰

  • 我正在测量的成本是创建通过 Builder(如其中之一)构建的对象的总成本,私有构造函数调用 new ArrayList 几次以及设置对现有对象的引用。测量的成本包括设置构建器和将构建器转换为域对象的成本
  • 编译(通过热点)有显着的影响,但它仍然相对较慢(在这种情况下,编译将其从 100 微秒降至约 60 微秒)
  • 在我的幼稚基准上编译(通过热点)将分配时间从 ~2micros 减少到 ~300ns
  • 延迟不随年轻一代收集算法(ParNew 或并行清除)而变化
0 投票
1 回答
64 浏览

c# - 服务器上的性能问题与应用程序的本地性能相比?

我正在寻找性能问题的解决方案。我们正在使用以下内容:

  • ASP.net
  • SQL 服务器
  • 实体框架

我希望有人以前遇到过这个问题并解决了它!

与在调试时本地运行相同的应用程序相比,在托管应用程序上执行 HTTP 请求所需的时间是 2 到 3 倍。但是,如果我们在服务器主机上的 preinit 和 rederer 之间进行跟踪,我们会得到大约 0.250 秒的请求时间,但是在观看它时,实际上需要 3 或 4 秒来呈现完整的页面。

这快把我们逼疯了!关于导致此问题的原因以及如何解决的任何想法?

是否有一个程序可以用来检查和调试它的根本原因?如果它发生在你身上,有没有关于你会尝试什么的建议?

谢谢!

0 投票
1 回答
690 浏览

c# - System.Net.Mail.SmtpClient.Send/Exchange 延迟

C# 应用程序使用 System.Net.Mail.SmtpClient.Send 发送电子邮件应用程序的日志文件显示 Send 方法在 11:39 成功当我在 Outlook 中打开电子邮件并执行 File|Properties 时,它显示 Sent: 11:39上午收到:上午 11:41

如果我去 View|Options ,标题显示: Received: from XXX by YYY with Microsoft SMTPSVC [...] 11:41:15 [...] Date: 9 Dec 2009 11:38:51 [... ] X-OriginalArrivalTime: [...] 11:41:15.0250

所以我的问题是 - 如果 Send 方法在 11:39 返回,但服务器仅在 11:41 收到它,那么这 2 分钟的电子邮件在哪里?换句话说,是否需要在运行应用程序的机器或 Exchange 服务器上进行配置?

0 投票
3 回答
941 浏览

facebook - 加快 Facebook 连接

我正在努力使 facebook 与我的网站连接,到目前为止它似乎工作得很好。但是,在我网站的每个页面上加载 facebook api 库都会陷入困境。我使用的所有其他 php 类都在不到 1 秒的时间内编译,但我看到服务时间在 3 到 20 秒之间,只是为了加载 facebook api。我可以做些什么来加快 facebook 连接速度?仅仅是因为我在(mt)共享服务器上吗?

0 投票
4 回答
834 浏览

dojo - CDN 上的 Dojo 与自己的安装

我使用了很多 Dojo,但到目前为止,我只通过包含来自 AOL/Google 等 CDN 的方式使用它。

托管 Dojo 的副本而不是通过 CDN 使用它有什么优势吗?我没有太多需要更改代码库,但我想还有其他优点/缺点?

0 投票
1 回答
827 浏览

sql - 延迟或我的 VPN 是否阻塞了我的 Excel 到 SQL Server 的上传?

我正在使用以下结构将数据从 Excel 上传到 SQL Server:

该过程的速度取决于服务器和运行该过程的计算机之间的地理距离。在服务器本身上它很快(在 10 分钟内插入 300,000 次),在该国的另一端它相对较慢(300,000 次插入可能需要几个小时)。远程上传通过 VPN 进行。

我认为网络延迟一定会减慢进程。有没有办法绕过网络延迟,或调整 VPN 以加快上传速度?

谢谢!

0 投票
5 回答
3762 浏览

networking - 确定网络中的不对称延迟

想象一下,在异构网络环境中,您有许多跨多台主机的集群服务器,因此服务器之间的连接可能具有非常不同的延迟和带宽。您希望通过在服务器之间传输数据来构建服务器之间的连接图。

当然,随着网络拓扑的变化,这张地图可能会随着时间的推移而变得陈旧——但现在让我们忽略这些复杂性并假设网络是相对静态的。

鉴于此主机图中节点之间的延迟,计算带宽是一个相对简单的时间练习。但是,我在延迟方面遇到了更多困难。要获得往返时间,只需对从本地主机到远程主机的回程 ping 进行计时——这两个计时事件(开始、停止)都发生在本地主机上。

如果假设延迟在两个方向上不相等,我想要单向时间怎么办?假设各个主机上的时钟不精确同步(至少它们的误差与所涉及的延迟具有相同的量级) - 我如何计算单向延迟?

在一个相关的问题中——这种不对称延迟(一个链接在方向上比另一个更快)在实践中是否常见?出于什么原因/硬件配置?当然,我知道非对称带宽场景,尤其是在最后一英里的消费者链路上,例如 DSL 和 Cable,但我对延迟不太确定。

补充:在考虑了下面的评论后,问题的第二部分可能会更好地使用serverfault

0 投票
8 回答
4734 浏览

java - 部署低延迟 Java 应用程序的最佳操作系统?

我们有一个用 Java 编写的低延迟交易系统(提要处理程序、分析、订单输入)。它广泛使用 TCP 和 UDP,不使用 Infiniband 或其他非标准网络。

任何人都可以评论部署该系统的各种操作系统或操作系统配置的权衡吗?虽然吞吐量对于跟上现代价格反馈显然很重要,但延迟是我们的第一要务。

自从创建 Java 以来,Solaris 似乎是一个自然的候选者。我应该使用 Sparc 还是 x64 处理器?

我听说过关于 RHEL 和 SLERT 的好消息,它们是在我们的基准测试中使用的正确版本的 Linux。

有没有人针对上述操作系统测试过 Windows?还是假设跟不上?

我想将 Java 与 C++ 的争论留给另一个话题。