记录自https://cloud.google.com/monitoring/api/v3/metrics#time-series
指标数据的收集时间表因受监控的资源而异。有些数据由 Stackdriver Monitoring 定期从受监控的资源中“拉取”,有些数据由应用程序、服务或 Stackdriver Monitoring 代理“推送”。
我想知道 stackdriver 如何从 Google Cloud Pub/Sub 收集数据,承诺的延迟范围是多少?我尝试创建主题/订阅并发布消息,并观察指标记录到 stackdriver 需要多长时间。平均大约1-2分钟,但有时很慢,长达5-8分钟。
我知道 Kafka 不是 ak/v 商店,但请耐心听我说。假设它是使用下面的 k/v API 来粗略实现的。每个键都是一个主题,键的当前“值”是写入该主题的最后一条消息:
put(key, value) --> publish(topic=key, message=value)
get(key) --> consume(topic=key, offset = last_offset - 1)
Run Code Online (Sandbox Code Playgroud)
此外,假设状态在不同的 Kafka 集群之间复制(使用 MirrorMaker 双向),以允许用户读/写到更近的数据中心以减少延迟。
我已经知道这样做的一些明显的副作用,例如:
这里主要关注的是延迟,尤其是不同集群之间的延迟。与 Redis、memcached 或 etcd 等传统 k/v 解决方案相比,您认为该解决方案在压力大的工作负载(例如,给定键/主题上每秒数千次写入)和压力网络条件下的表现如何?
想法?
非常感谢你。
我已在 Kubernetes 集群中部署了 Istio Bookinfo 应用程序。根据文档,我尝试使用以下查询来测量平均请求持续时间:
rate(istio_request_duration_milliseconds_sum[1m]) / rate(istio_request_duration_milliseconds_count[1m])
Run Code Online (Sandbox Code Playgroud)
此查询返回“双倍”结果,即对于每个请求,我得到两个结果,具有不同的值,但源和目标相同,一个标记为reporter=“source”,另一个标记为reporter=“destination”。我无法找到任何相关说明,也不清楚这些措施是如何运作的。为什么我返回两个值?
我使用了相当多的Dojo,但到目前为止我只是通过包含来自AOL/Google等CDN来使用它.
托管Dojo副本而不是通过CDN使用它有什么好处吗?我没有太多需要改变代码库,但我想有其他优点/缺点?
我正在开发一个由多人网络浏览器游戏组成的爱好项目.这是我的第一次,我偶然发现了延迟问题.
我试图让用户控制尽可能顺利,并且延迟正在阻碍.
我认为平均延迟可能在80-200ms左右,而对于几乎平滑的控制,命令动作延迟需要小于100ms.
我有几个问题:
在需要之前100毫秒尝试发送用户操作是不错的做法?例如,用户按住" - >"箭头键,我需要在行动需要提交给服务器之前100ms提交右箭头键动作.
开发人员如何在在线服务器和客户端之间保持一致/同步?
任何提示或建议?
谢谢你们,非常感谢帮助.:)
想要诊断当我的客户与世界另一端的服务器通话时发生的瓶颈.我想在我的本地计算机上运行服务器并模拟延迟.有没有办法在所有远程调用中注入一个简短的线程睡眠?我不确定哪个远程呼叫是瓶颈,所以我需要将它们全部延迟.
第二次尝试澄清:我不想将线程睡眠复制粘贴到每个远程方法中,因为有很多远程方法.我正试图找到一种方法将睡眠注入RMI子系统,因此所有通过RMI的调用都将被延迟.
我试图了解接收器窗口如何影响高延迟连接的吞吐量.
我在两台相距很远的机器上有一对简单的客户端 - 服务器应用程序,两者之间的连接是250毫秒延迟RTT.我使用Windows(XP,7)和Linux(Ubuntu 10.x)运行此测试,结果相同,所以为了简单起见,我们假设:客户端接收数据:WinXP Pro Server发送数据:Win7 Pro再次,延迟是250毫秒RTT.
我在不更改客户端上的接收器缓冲区大小的情况下运行TCP测试(默认为8Kb),我在线上看到(使用Wireshark):
查看跟踪,我看到3-4个数据包(有效载荷为1460字节)的突发,紧接着是从客户端机器发送到服务器的ACK,然后没有任何约250毫秒然后来自服务器的新数据包突发给客户.
因此,总而言之,服务器似乎甚至在填满接收者窗口之前就不会发送新数据.
为了做更多的测试,这次我还运行了相同的测试,在客户端机器上更改了接收器的缓冲区大小(在Windows上,更改接收器的缓冲区大小最终会影响机器公布的RWIN).我希望在阻止ACK之前看到大量的数据包突发...并且至少有更高的吞吐量.
在这种情况下,我将recv缓冲区大小设置为100,000,000.从客户端到服务器的数据包现在有一个RWIN = 99,999,744(好吧,那很好),但不幸的是从服务器发送到客户端的数据模式仍然是相同的:短暂的突发,然后是漫长的等待.为了确认我在线上看到的内容,我还测量了从服务器向客户端发送大量数据的时间.我没有看到使用大型RWIN或使用默认值的任何更改.
任何人都可以帮助我理解为什么更改RWIN并不会真正影响吞吐量?
很少有注意事项: - 服务器使用8Kb块的write()尽可能快地发送数据 - 正如我之前所说,我也看到了使用Linux的类似效果.更改接收器缓冲区大小会影响节点使用的RWIN,但吞吐量保持不变. - 我分析了数百个数据包之后的跟踪,给TCP足够的时间启动机制放大CWIN大小.
正如所建议的那样,我在这里添加了一条线迹的小快照
No. Time Source Destination Protocol Length Info
21 2.005080 CCC.CCC.CCC.CCC sss.sss.sss.sss TCP 60 57353 > 21500 [ACK] Seq=1 Ack=11681 Win=99999744 Len=0
22 2.005109 sss.sss.sss.sss CCC.CCC.CCC.CCC TCP 1514 21500 > 57353 [ACK] Seq=19305 Ack=1 Win=65536 Len=1460
23 2.005116 sss.sss.sss.sss CCC.CCC.CCC.CCC TCP 1514 21500 > 57353 [ACK] Seq=20765 Ack=1 Win=65536 Len=1460
24 …Run Code Online (Sandbox Code Playgroud) C++编程语言有哪些方面,其中代码比同等的C语言慢?显然,这将排除虚拟功能和vtable功能等OO功能.
我想知道,当你在延迟关键领域进行编程时(并且你不担心OO功能)是否可以坚持使用基本的C++或者C会更好吗?
我有一个我无法理解的stange行为:为了性能测量的目的,我使用'旧的'并行端口接口在debian内核3.2.0-4-amd64上生成IRQ(我使用连接的外部信号发生器) to tha ACK pin).
我编写了自己的内核模块(仅限上半部分)来处理中断并将外部信号发送回并行端口,并在示波器上显示两个信号,以便测量内核响应时间.一切都按预期工作,我可以看到平均70μs的时间响应,一些20μs的"爆发".我正在运行"Intel(R)Core(TM)i3-3240 CPU @ 3.40GHz".
现在,"无法解释"的部分.如果我使用"压力"程序加载CPU,内存和I/O,我预计平均时间最差,但是相反的情况发生:我的平均响应时间下降到20μs.我尝试了3个不同的内核:vanilla,PREEMT-RT和vanilla,NO_HZ选项设置为false.有人可以解释这个的魔力吗?
我将"调控器"配置更改为"性能",但不会更改任何内容.
我是普罗米修斯和格拉那那的新手。
我的主要目标是获得每个请求的响应时间。
对我来说,这似乎是一件简单的事情-但是,无论我做什么,我都无法获得所需的结果。
我需要能够分析最近几分钟/几小时/几天的服务延迟。我发现的当前实现是一个简单的摘要(没有分位数的定义),每15秒就会刮一次。
目前,我正在使用以下查询:
rate(http_response_time_sum{application="myapp",handler="myHandler", status="200"}[1m])
/
rate(http_response_time_count{application="myapp",handler="myHandler", status="200"}[1m])
Run Code Online (Sandbox Code Playgroud)
我得到两个“数据集”。第一个的值为“ NaN”。我想这是零除的结果。
提前THX!
(使用spring-client)
latency ×10
performance ×3
monitoring ×2
prometheus ×2
apache-kafka ×1
c ×1
c++ ×1
cdn ×1
debugging ×1
dojo ×1
duration ×1
grafana ×1
istio ×1
java ×1
kubernetes ×1
linux ×1
linux-kernel ×1
networking ×1
pygame ×1
python ×1
rmi ×1
stackdriver ×1
summary ×1
tcp ×1
throughput ×1