我testing了我的服务器¹与机械化的python端口 – 多机械化 。 我运行了几个非常简单的testing – 但是我总是从10mbits到几kb的上传带宽下降。 我不知道为什么。
无论我运行3,15或30分钟,结果都没有什么不同。 在下面给出的分析中可以看到,在110到120之间总是有一个带宽下降到几乎为零。 我select了一个短跑,所以更容易find下降。
htop的检查显示没有什么特别的,核心运行在2%到7%之间。
内存使用总是在2048mb保证内存的1000mb(+ -100)左右。
当我检查iftop时,没有什么特别之处,但是从10mbits到几千字节的上传下降了约10秒(110-120s)
所有的cronjobs /不必要的任务都被禁用。 所有页面(前面/随机)都可用。 每个请求都由一个http响应代码200来回答。Apache和MySQL错误日志是空的。
由于我是一名pipe理员,我不确定是否有更多的相关信息。 是加载Apache的MODS相关? 希望我提到所有重要的事实。
[global] run_time = 180 rampup = 0 results_ts_interval = 10 progress_bar = on console_logging = off xml_report = off [user_group-1] threads = 10 script = frontpage.py [user_group-2] threads = 10 script = randompost.py
import mechanize class Transaction(object): def run(self): br = mechanize.Browser() br.set_handle_robots(False) resp = br.open('http://host.domain.tld/') resp.read() assert (resp.code == 200), 'Bad Response: HTTP %s' % resp.code assert ('Example Web Page' in resp.get_data())
实际上是一样的FrontPage,但随机页面
import mechanize import random pages = [ '...', '...', '...', # ... ] class Transaction(object): def run(self): br = mechanize.Browser() br.set_handle_robots(False) resp = br.open(random.choice(pages)) resp.read() assert (resp.code == 200), 'Bad Response: HTTP %s' % resp.code assert ('Example Web Page' in resp.get_data())



正如@linuxdevops提到的,我试图用scp和ftp下载文件。 我的testing包括一个10MB的文件和我的网站的文件夹 – 意味着从1-1xx kb的许多文件。 没有不及格的转移或任何明显的滞后 。 我不确定是否有更专业的方法来确定FTP / SCP传输的一致性 。
¹虚拟主机规格
一个好的开始就是使用像netperf这样的工具。 谷歌find它
从您的客户端运行netperf: netperf -H <serverIP> -f M -l 240 -- -s 4194304
-f M (以MB / s显示输出) -l (以秒为单位) -- (选项跟着两个破折号) -s (sockets尺寸) 这是find正确的套接字/缓冲区大小的简单方法。 例如,Windows中的默认套接字大小仅为8192.使用拖放操作的副本将使用此默认大小,您将以22 MB / s左右的速度进行最大化。 一旦你增加到64K,你会看到你的100-120 MB /秒。 现在大多数软件都允许你改变它,或者将硬编码他们testing过的甜蜜点。 所以,如果使用winscp或者filezilla或者其他的文件传输工具,那么你需要在Linux中检查你的TCP缓冲区,以及Windows中的winsock缓冲区。
Linux例子:/etc/sysctl.conf
net.ipv4.tcp_rmem = 4194304 4194304 4194304 net.ipv4.tcp_wmem = 4194304 4194304 4194304 Windows: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters
DefaultReceiveWindow = 65536 DefaultSendWindow = 65536 重启
如果你可以运行netperf超过你的120秒,并没有看到你的谷底,但然后将实际的数据复制到磁盘,仍然看到它,然后你可以移动到故障排除你的磁盘。 如果您尝试各种缓冲区/套接字大小,仍然看到减less,那么我的下一步将是一个数据包捕获。
在虚拟主机上:
tcpdump -i <interface> -vvv -nn -s0 port 12865 -w /desiredDir/troughTest.cap netserver netperf -H <serverIP> -f M -l 300 -- -s 4194304 让它运行一段时间然后ctrl-c或者当你认为你有足够的数据包的时候杀掉它。 最后,ctrl -c你的tcpdump,将你的/desiredDir/troughTest.cap文件传输到你的笔记本电脑/工作站,如果你还没有安装wireshark,分析数据包