在多个用户同时使用的大型服务器上,我经常感到速度缓慢,有许多CPU (72)和相当数量的ram (125 of )。
当然,服务器运行了很多东西,因此负载很大,但是几乎从来没有发生过接近所有CPU同时使用的情况。拉姆的使用率经常上升到80%左右。我注意到,iowait经常会变得很高(大多数时候是15%,我见过20%以上),而且交换似乎总是完全被100%利用。交换值为4gb。
为了解决速度慢的问题,你有什么建议?
以下是我考虑过的一些选择:
很高兴得到你对这些选择的想法。
我不是这个领域的专家,所以任何其他的建议也是非常欢迎的。
编辑:根据评论中的讨论添加详细信息。见下文:
vmstat
向我展示了一个非常高的交换数字,使用glances
,我看到了一个警告(ongoing) MEMSWAP (100.0)
发布于 2022-09-14 16:20:22
首先,我会得到一些类似于性能副试点的安装,这样您就可以了解服务器上的使用趋势。此外,我只需要坐一段时间来了解哪些进程是最活跃的,以及它们使用了多少内存。
第二,增加掉期,甚至取消互换,似乎是合理的。对于这么大的服务器来说,4gb几乎毫无价值。人们会永久地关闭交换,这样在内存压力下,VM就不能开始篡改页面,并为此目的使用过多的CPU。当然,在内存不足时,仍然有大量不需要的脏页和缓冲区缓存,VM可以开始逐出它们,但是这些会转到文件系统中。如果内核没有经常删除内存不足的进程,那么可能内存利用率主要是文件系统缓存。
总之,删除交换设备,添加pcp,尝试获得内存如何使用的句柄,如果您添加回交换,请确保它的大小是正确的。理想情况下,您希望在交换中休眠进程,并且所有活动进程都能够适应可用的RAM。如果活动进程都在长时间内交换页面,那么更多的交换将使服务器超出其能力范围。
发布于 2022-09-16 19:43:02
然而,有一件事是很清楚的,就是当内存至少还剩下20/30 is的时候,交换就会被填满(100%),通常会更多。
不要删除交换。你的虚拟内存用完了。增加交换大小最多1-2 x RAM.交换用于将当前不需要的虚拟内存页从RAM交换到磁盘。
您可能有空闲的物理RAM,但同时也没有虚拟内存。
比较
# The amount of memory presently allocated on the system. The committed memory is a sum of all of the memory which has been allocated by processes, even if it has not been “used” by them as of yet.
cat /proc/meminfo | grep Committed_AS
使用
# This is the total amount of memory currently available to be allocated on the system, expressed in kilobytes.
cat /proc/meminfo | grep CommitLimit
如果Committed_AS不断接近CommitLimit和高交换内存,则添加更多内存。
还有压力失速信息
https://serverfault.com/questions/1110715
复制相似问题