因此,我一直在努力优化运行 LEMP 的 Ubuntu Server 18.04,使所有内容保持最新,包括最新的内核更新,并且我注意到 SSH 响应能力存在一些轻微的延迟。
我的想法是针对 RAM 和 SWAP 的使用 https://i.stack.imgur.com/hagZM.jpg
上面的链接中有 free -m、htop 和 vmstat 的屏幕截图。我不太清楚这里发生了什么,不是使用了全部 RAM,而是使用了超过 2GB 的 SWAP?...
我发现有两种可能性:
- 我的 RAM 实际上已经用完了,而 ubuntu 使用了这 2GB 交换空间中的很大一部分,并保留了少量的可用内存用于执行重要任务。
- 我实际上并没有使用很多 RAM,而 ubuntu 只是使用 SWAP 来提高性能。
然而,我有疑问,如果有人能给我正确的理解我会更好。
我还将 swappiness 设置为 5,将 vfs_cache_pressure 设置为 50,以尽可能少地使用 SWAP,这已经是相当长一段时间了。
这种情况会不会是导致我的 SSH 速度慢的原因?例如:
在本地电脑的终端上输入密码 - 我可以尽可能快地打字,这样就可以了。
通过 SSH 在远程服务器上输入密码 - 我无法尽可能快地输入密码,因为它会告诉我密码无效。
我在输入密码时使用了 shift,但当 SSH 速度较慢时,它不应该导致我输入无效密码。
答案1
看起来您的情况是大部分内存都已使用,只是没有用于程序。通常,Linux 会倾向于交换程序的某些部分,以便为缓冲区和页面缓存留出一些内存。
虽然这看起来似乎违反直觉,但实际上它使性能大大提高。与内存通信通常要慢几个数量级,因此在内存中保留一些磁盘缓存可以显着提高性能。这是正常现象,您不需要以任何方式调整交换或缓存压力,并且您应该撤消对这些设置所做的任何更改。
您在通过 SSH 输入时看到延迟的原因可能是网络问题。当您以交互方式使用 SSH 时,您需要低延迟:也就是说,最重要的是尽快发送数据包,即使这意味着您可以发送的数据量要少得多。在某个时候,您的数据包往返所需的时间比应有的时间要长。
造成这种情况的原因有很多,但很大程度上取决于您的服务器位于何处。如果服务器距离较远,延迟会更高。此外,如果某处网络拥塞,您也会看到一些延迟。
通常用于解决此类问题的工具是mtr
。您可以运行mtr -t YOUR_SERVER
并查看是否存在任何延迟问题。
如果没有延迟问题,那么问题可能是服务器内存不足,但在这种情况下,您的解决方案是添加内存,而不是修改内核参数。从您的图片中可以明显看出,您的内存远远超出了服务器的内存容量,您需要添加更多内存或减少内存使用量。