大多数时候,每当我向 SSH 终端发布相当大的块内容时,它都会以每 20 秒 1000 个字符的速度抓取它;有时几乎停止。
“合理的大块”并不是一些大量的数据集,它通常少于 5000 个字符(php,ascii)脚本。
为什么是这样?
我发现目标服务器上的 bash 正在崩溃,占用了 100% 的 CPU。发生了什么?
编辑跟踪路由:
traceroute to ec2-23-24-25-26.compute-1.amazonaws.com (23.24.25.26), 64 hops max, 52 byte packets
1 192.168.1.1 (192.168.1.1) 1.704 ms 1.040 ms 0.914 ms
2 10.240.88.1 (10.240.88.1) 11.722 ms 12.449 ms 12.633 ms
3 bmly-core-2b-ae4-1332.network.virginmedia.net (80.3.65.233) 10.545 ms 20.922 ms 10.216 ms
4 brnt-bb-1b-ae6-0.network.virginmedia.net (213.105.159.229) 37.524 ms 13.632 ms 15.232 ms
5 popl-bb-1a-as7-0.network.virginmedia.net (62.255.81.237) 11.881 ms 50.011 ms 12.091 ms
6 popl-bb-1b-ae0-0.network.virginmedia.net (213.105.174.230) 15.561 ms 19.908 ms 39.367 ms
7 tele-ic-5-ae0-0.network.virginmedia.net (213.105.159.117) 18.477 ms 42.429 ms 12.764 ms
8 equinix01-iad2.amazon.com (206.223.115.68) 162.399 ms 96.645 ms 108.442 ms
9 72.21.220.51 (72.21.220.51) 92.975 ms
72.21.220.49 (72.21.220.49) 101.136 ms
205.251.245.7 (205.251.245.7) 96.280 ms
10 72.21.222.149 (72.21.222.149) 97.333 ms
72.21.222.141 (72.21.222.141) 104.084 ms 112.991 ms
11 216.182.224.214 (216.182.224.214) 98.459 ms
216.182.224.207 (216.182.224.207) 105.273 ms
216.182.224.55 (216.182.224.55) 108.202 ms
12 * * *
答案1
这通常是一个被填满的缓冲区。你可以将其与高速公路上的交通进行比较,如果行驶的汽车少于高速公路的设计数量,那么一切都会顺利进行。但是,如果行驶的汽车超过限制,高速公路上的交通就会变慢,因为高速公路无法处理。CPU 只会变得更高,因为它不断清空和填充缓冲区的一小部分,从而导致更多的周期。100 毫秒的延迟很快就会累积起来,使所有数据通过缓冲区需要几秒钟的时间。
SSH 是为执行命令而设计的,因此您可能想使用另一种方法来实现这一点,或者尝试重新思考您到底在做什么。我不明白为什么您应该远程编辑 PHP(这在当今毫无意义),或者为什么您要复制粘贴文件,而您本来可以直接发送它...