Http 如何计算每秒传出的请求数?
我正在编写一个go程序,它将使用goroutines并发地发出数千个Http 如何计算每秒传出的请求数?,http,go,Http,Go,我正在编写一个go程序,它将使用goroutines并发地发出数千个http.Get请求。这将是一个长期运行的过程,我将添加一个管理功能,它将列出有关该过程的某些统计信息 我正试图找出一个干净的方法来计算每秒我发出的请求数。我提出了一些可能的解决方案: 存储一个计数器,并有一个计时器,每隔几秒钟执行一次,计算每秒的请求数,然后重置计数器。我担心以线程安全的方式执行此操作。如果在访问此计数器之前使用互斥锁,是否会降低性能 为每个成功提出的请求保留一个时间戳列表,这样我就可以在我关心的时间段内的所有
http.Get
请求。这将是一个长期运行的过程,我将添加一个管理功能,它将列出有关该过程的某些统计信息
我正试图找出一个干净的方法来计算每秒我发出的请求数。我提出了一些可能的解决方案:
对于我来说,计算Go程序中每秒发出的
http.Get
请求数的最佳方法是什么 如果使用简单计数器,只需使用递增和(或…Uint64
变体)即可安全读取和重置计数器。或者,您可以使用类似的.1。为什么在访问网络时都使用互斥锁?2.这一切都取决于你想以何种精度测量哪个数字。@Volker你说的“为什么两者都是互斥”是什么意思?我会使用一个,因为成千上万的goroutine将经常访问/更新这个号码。是解决这个问题的一个干净的惯用方法,你不必重新发明轮子。@JustinOpolony,我不应该尝试为@Volker说话,但我相信他是想说不要担心或被一个额外的互斥(或者更好,一个操作)的开销所困扰与从网络连接读/写所需的同步和开销相比(即调用http.Get
)。与此相比,额外的互斥可以忽略不计。