Col*_*rre 6 ssh performance http
如果我通过 ssh 连接到服务器,那么发出 ls 命令和获取结果之间的时间几乎没有。
但是,如果我在浏览器中的同一台服务器上为一个简单的 html 页面(仅包含单词“hello”)发出 http 请求,则至少需要一秒钟。
为什么是这样?
Mar*_*son 12
我对 SSH 的工作原理知之甚少,但据我所知,它基本上接受您的键盘输入并将其通过管道传输到远程控制台的外壳中。建立连接并交换密钥后,重量非常轻。
HTTP 是一个完全不同的协议。它的工作原理有点像这样,假设它只是一个静态 HTML 页面:
这是一个非常基本的概述,但 HTTP 中还有很多内容。与 SSH 不同,它不是“轻量级”协议。
此外,与 SSH 不同,大多数 HTTP 请求都是独立的,您的 TCP 连接会重新建立。SSH 使您的 TCP 会话保持打开状态,这意味着每次您按下一个键时,您都不必重新建立连接。这就是为什么您的 Web 浏览器可以在拔掉电源几分钟后存活下来,但是一旦您失去连接,您的 SSH 会话就会中断。
你在比较苹果和橙子。
您下载单字网页的时间主要包括实际建立连接所需的时间:查找主机的 DNS 记录,然后与它建立 TCP 连接,然后请求文档。
这与您设置 ssh 连接所花费的时间更具可比性:查找主机的 DNS 记录,然后与它建立 TCP 连接,然后进行身份验证,这实际上要长得多,因为 ssh 是一种更复杂的协议(并且必须设置加密)。
您在 ssh 会话中的交互响应时间主要是由于您与远程服务器之间的延迟量,在实际建立连接之后。在 HTTP 中没有一对一的模拟,尽管 HTTP 确实有一个保持活动的选项,默认情况下是打开的,并保持与服务器的连接打开,以便可以下载多个资源而无需设置再次连接。
我只是为 SSH 连接和 wget 计时。
$ time ssh (host) echo "" > /dev/null
real 0m0.461s
user 0m0.004s
sys 0m0.012s
$ time wget (host)
(deletia)
real 0m0.013s
user 0m0.008s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
“更快”是相对的。
| 归档时间: |
|
| 查看次数: |
4937 次 |
| 最近记录: |