我目前正在开发一个n层系统,并在解决一些数据库性能问题.我们一直在研究的一个领域是数据库服务器和应用服务器之间的延迟.在我们的测试环境中,两个盒子之间的平均ping时间在0.2ms的范围内,但是在客户端站点上,它在8.2ms的范围内更多.这是我们应该担心的事吗?
对于您的普通系统,您认为什么是合理的延迟?您将如何测试/测量延迟?
卡尔
我尝试使用TcpClient发送/接收数据.我做了两个实验,发现了一些有趣的东西
我在日本的服务器和英国的TcpClient中设置了TcpListener.我一直向TcpListener发送500个字节,当TcpListener将10KB发送回TcpClient时.我在每个实验中保持这个发送/接收循环500次.
实验1:
在每个发送/接收循环中,我创建一个全新的TcpClient(创建之前的时间滴答)并发送/接收
实验2:
对于所有循环,我只有一个TcpClient,它保持与TcpListener的连接并执行500次发送/接收.
结果:
一个循环的时间成本的平均值:
E1:1.8秒,E2:0.49秒.
我很惊讶这个结果.所以保持连接不断的发送/接收可以节省大量的时间??? 近2/3的时间.
这是真的???
谢谢
==== ====新
@Jon Skeet,@ dbemerlin,谢谢你的回复.我猜测Tcp握手需要一些时间工具.
所以我做了实验3.
我将HttpListener设置为服务器并使用WebClient进行发送/接收,数据大小完全相同.每次我使用新的WebClient在英国和日本之间发送/接收.
结果是0.86(平均来自500次循环,即发送/接收).
我假设WebClient/HttpLisener本身就是Tcp,对吧?在我的实验中,它们如何比原始TcpClient/TcpListener更快?
再次感谢
我定期播放一些音符.每一个都会延迟一个随机的毫秒数,从而产生刺耳的不规则效果.我如何解决它?
注意:只要它一致,我就会有一些延迟.
"实现你自己的小型SoundManager2替换,为时间敏感的播放进行了优化"的答案是可以的,如果你知道如何做到这一点:)但我试图避免在Flash中重写我的整个应用程序.
有关可听延迟为零的应用程序示例,请参阅基于闪存的ToneMatrix.
<head>
<title></title>
<script type="text/javascript"
src="http://www.schillmania.com/projects/soundmanager2/script/soundmanager2.js">
</script>
<script type="text/javascript">
soundManager.url = '.'
soundManager.flashVersion = 9
soundManager.useHighPerformance = true
soundManager.useFastPolling = true
soundManager.autoLoad = true
function recur(func, delay) {
window.setTimeout(function() { recur(func, delay); func(); }, delay)
}
soundManager.onload = function() {
var sound = soundManager.createSound("test", "test.mp3")
recur(function() { sound.play() }, 300)
}
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它从我们的其他服务器之一获取 JSON 格式的数据。我面临的问题是,在请求此信息时存在显着延迟。由于传递了大量数据(每个请求大约 1000 条记录,其中每条记录都非常大),有没有一种方法可以通过压缩来帮助降低速度。如果是这样,您会推荐哪种压缩方案。
我在另一个线程上读到,他们的数据模式对需要使用的压缩类型也很重要。数据的模式是一致的,类似于以下
:desc=>some_description
:url=>some_url
:content=>some_content
:score=>some_score
:more_attributes=>more_data
Run Code Online (Sandbox Code Playgroud)
有人可以推荐一个解决方案来减少这种延迟。他们的延迟大约是 6-8 秒。我正在使用 Ruby on Rails 开发这个应用程序,而提供数据的服务器大部分使用 Python。
我会计算正在运行的音频/视频通话的延迟时间。
根据RTCStatsReport 对象的这些参数,我如何检索延迟时间?
latency = packetsize / delay + bandwidth
Run Code Online (Sandbox Code Playgroud) import subprocess
host = "yahoo.com"
ping = subprocess.Popen(
["ping", "-c", "3", host],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
out, error = ping.communicate()
print out
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有这个用于对服务器进行 ping 测试
基本上:
看看这个,
每次我想查询产品价格时,我都会向 f3 的 API 发送一个包含产品详细信息的 HTTP GET 请求。我正在尝试确定在接到我的电话后检索产品价格信息需要多长时间。
我有一段时间有这个问题,我很惊讶我还没有得到一个好的/完整的答案.
问题基本上是这样的:当涉及到加载js文件时,在什么情况下你应该从网上加载它们(如果可用)而不是自己提供它们?什么情况通常允许最低延迟?
例如
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
与
<script src="js/jquery-1-11-3.min.js"></script>
我正在寻找有关如何为我在Ubuntu Linux 14.04上运行的应用程序提供高效和高性能异步IO的建议.
我的应用程序处理事务并在磁盘/闪存上创建文件.当应用程序正在进行事务处理时,会创建必须附加到磁盘/闪存上的文件的附加块.应用程序还需要在处理新事务时频繁读取此文件的块.除了还要创建必须附加到此文件的新块之外,每个事务可能还需要从该文件中读取不同的块.有一个传入的事务队列,应用程序可以继续处理队列中的事务,以创建足够深的IO操作管道,以隐藏读取访问的延迟或磁盘或闪存上的写入完成.对于尚未写入磁盘/闪存的块(由先前事务放入写入队列)的读取,应用程序将停止,直到相应的写入完成.
我有一个重要的性能目标 - 应用程序应该产生尽可能低的发布IO操作的延迟.我的应用程序大约需要10微秒来处理每个事务,并准备对磁盘/闪存上的文件发出写入或读取.发出异步读取或写入的额外延迟应尽可能小,以便应用程序可以在每次事务处理时尽可能接近10个usecs,只需要进行文件写入时完成每个事务的处理.
我们正在尝试使用io_submit发出写入和读取请求的实现.我将不胜感激任何有关我们要求的最佳方法的建议或反馈.io_submit会给我们最好的表现以达到我们的目标吗?我应该期望每个写入io_submit的延迟和每个读取io_submit的延迟?
使用我们的实验代码(在2.3 GHz Haswell Macbook Pro,Ubuntu Linux 14.04上运行),我们在扩展输出文件时测量写入io_submit大约50个usecs.这太长了,我们甚至没有接近我们的性能要求.任何帮助我以最小延迟启动写请求的指南都将非常感激.
我目前正在使用Google Cloud Function来构建我的restful API.但是,我发现它很慢,因为我的Google-Cloud-Function服务器位于"us-central",而我的服务是在亚洲.
我尝试将我的Google项目的默认区域更改为"asia-west-1"并重新启动云功能 - 我按照此处列出的步骤进行了操作- 但不幸的是,它仍处于"us-central"状态.如何更改功能区域?
latency region google-cloud-platform gcloud google-cloud-functions
所以我通过 GoLang 托管一个 TCP 服务器,然后我想使用多个 TCP 客户端连接到我的 TCP 服务器,并在每次连接新客户端时测量 RTT。我还没有找到任何可以让我在 Golang 中测量 RTT 连接到该服务器的东西(就像我连接到本地主机一样,它不起作用)下面是我的 TCP 服务器代码。
package main
import (
"bufio"
"fmt"
"log"
"math/rand"
"net"
"os"
"strconv"
"strings"
"time"
)
var counter int
const MIN = 1
const MAX = 100
func random() int {
return rand.Intn(MAX-MIN) + MIN
}
func verifyPortNo(portNo string) bool {
conn, err := net.Listen("tcp", portNo)
if err != nil {
log.Println("Connection error: ", err)
log.Println("Cannot verify port")
return false
}
log.Println("Available")
conn.Close()
return true
} …Run Code Online (Sandbox Code Playgroud) latency ×10
performance ×3
javascript ×2
networking ×2
python ×2
aio ×1
audio ×1
c# ×1
compression ×1
connection ×1
database ×1
gcloud ×1
go ×1
linux ×1
region ×1
tcp ×1
tcpclient ×1
web-crawler ×1
webrtc ×1