我有一个8GB的RAM系统,并运行MySQL,顶部命令显示
Mem:总计8124416k,使用8110004k,使用14412k,使用21292k缓冲区交换:总共8388600k,使用1712132k,使用6676468k,使用20566000kcaching
vmstat 1给出了这个输出
rb swpd free buff cache si so bi bo in cs us sy id wa st 3 0 1712132 38596 21628 2033920 0 0 451 77 0 1 14 1 81 5 0 1 0 1712132 38412 21628 2033928 0 0 32 0 695 534 9 1 90 1 0 0 0 1712132 37992 21656 2034412 0 0 476 136 630 474 8 0 84 8 0 0 0 1712132 37992 21656 2034424 0 0 0 0 232 138 4 0 96 0 0 2 0 1712132 37540 21656 2034424 0 0 0 0 463 228 41 1 58 0 0 1 0 1712132 37480 21656 2034440 0 0 16 0 393 208 26 0 74 0 0 2 0 1712132 37932 21664 2034432 0 0 0 244 655 454 38 1 59 2 0 1 0 1712132 38056 21664 2034440 0 0 0 0 403 193 36 0 63 0 0 0 0 1712132 38056 21664 2034440 0 0 16 16 498 362 13 0 87 0 0 3 0 1712132 37872 21664 2034488 0 0 48 0 463 350 9 1 89 1 0 1 0 1712132 37996 21664 2034488 0 0 16 0 765 536 29 0 70 0 0 3 0 1712132 37996 21672 2034512 0 0 16 92 855 539 46 1 53 0 0 2 0 1712132 38432 21676 2034508 0 0 20 0 1015 545 63 1 36 0 0 0 0 1712132 38680 21684 2034544 0 0 0 72 540 307 34 0 66 0 0 6 0 1712132 38556 21684 2034544 0 0 0 0 926 518 80 1 20 0
0
免费-m给
total used free shared buffers cached Mem: 7934 7910 23 0 21 1999 -/+ buffers/cache: 5889 2044 Swap: 8191 1672 6519
是使用交换空间的问题,还是正常的,好的。
在此先感谢Pankaj
你的情况中的重要的一列不是swpd
但是si
so
。 Linux将未使用的东西交换出来是正常和健康的。 但是,如果显示了持续的活动,那么这意味着您的使用模式没有足够的资源。 正如其他人指出的,这意味着你有一个泄漏的应用程序或只是没有足够的内存。
坦率地说,我没有看到你发布的vmstat
信息的任何令人不安的地方。
如果我正确地阅读数字(困难W / O正确的格式),我会说你的系统运行不正常。 可能是应用程序的内存泄漏,或者只是应用程序需求对于系统硬件来说太重了。
运行一个顶部,并按内存使用情况进行sorting,以查看占用这么多RAM的内容。 如果可能的话,我会重新开始占用所有内存的服务,并且随着时间的推移仔细观察它,看看它如何快速恢复以咀嚼这么多的内存。
使用大量的交换并不总是一个问题,只要是不甩磁盘。 交换的使用可以是对资源的有效利用,也可以是有害的,具体取决于机器的运行方式。
机器上的负载是多less?
这是系统如何在正常状态下运行? 我不认为这是一个巨大的问题,但看起来这个系统会受益于RAM的增加。 负载在哪里?
作为一个数据库服务器,我会告诉你,连续交换(si等列)不是一个好信号。
MySQL的innodb_buffer___pool__size参数的大小是多less?
Linux系统倾向于交换未使用的数据,尽pipe我不确定为什么RAM中有1GB的难以使用的信息。 如果你的si / so值不为零,我会更关心的。
我假设你使用InnoDB存储所有的表? 你有没有做任何自定义调整性能? 你真的看到一个问题,或只是关注的数字?