我有linux(Ubuntu)机器作为客户端。我希望在200个用户同时尝试从我的服务器下载文件时测量数据传输速率。
是否有一些python或linux工具?或者你能推荐一种方法吗?
我看到了this speedcheck code,我可以把它包装在线程中,但是我不明白为什么代码那么“复杂”而且块大小一直在变化。
答案 0 :(得分:1)
我最近使用Mult-Mechanize来运行一些性能测试。这很简单,工作得很好。
答案 1 :(得分:1)
不确定您是否在谈论实际的专用服务器。对于流量图表等,我更喜欢使用Munin。它是一个非常完整的监控应用程序,使用rrdtool为您构建漂亮的图形。示例链接在munin网站上:full setup,eth0 traffic graph。
new munin 2更加华丽,但我还没有使用它,因为它不在我的回购中,我不喜欢乱用perl应用程序。
答案 2 :(得分:1)
也许来自apache的'ab'?
ab -n 1000 -c 200 [http[s]://]hostname[:port]/path
-n Number of requests to perform
-c Number of multiple requests to make at a time
它有很多选项,http://httpd.apache.org/docs/2.2/programs/ab.html 或者男人ab
答案 3 :(得分:0)
import threading
import time
import urllib2
block_sz = 8192
num_threads = 1
url = "http://192.168.1.1/bigfile2"
secDownload = 30
class DownloadFileThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.u = urllib2.urlopen(url)
self.file_size_dl = 0
def run(self):
while True:
buffer = self.u.read(block_sz)
if not buffer:
raise 'There is nothing to read. You should have bigger file or smaller time'
self.file_size_dl += len(buffer)
if __name__ == "__main__":
print 'Download from url ' + url + ' use in ' + str(num_threads) + ' to download. test time ' + str(secDownload)
threads = []
for i in range(num_threads):
downloadThread = DownloadFileThread()
downloadThread.daemon = True
threads.append(downloadThread)
for i in range(num_threads):
threads[i].start()
time.sleep(secDownload)
sumBytes=0
for i in range(num_threads):
sumBytes = sumBytes + threads[i].file_size_dl
print sumBytes
print str(sumBytes/(secDownload *1000000)) + 'MBps'