Linux 是一个非常棒操作系统。几乎所有的更新中,它都在不断的完善中。 现在已经呈现出:从小到手机,大到超级计算机,无处不在运行着Linux。而其平均每8个星期就会有新的版本发行出来,并且伴随着很大的变化。对于生产环境中的服务器,这通常会造成一些技术上的苦恼以及问题。我们也会在文章讨论到这些问题。
其中对于swap的问题。 所有人都不希望使用到swap,但是对于在生产中的Linux服务器如何才能正确的使用,分配,管理,监控 swap?
首先是swappiness。这是一个Linux内核参数,并且可以通过sysctl来调控Linux系统采用什么机制来调配物理内存与cache交换。 在很多的Linux发行版本中其swappiness参数通常是设置为60,而这个设置是非常不合理的。 我们通常设置swappiness为0,在生产服务器中尽量避免使用swap分区。 在很多的层面来说使用swap是非常不正常的,例如在实际环境中,任何在使用swap的进程都将被冻结,而这对于多线程的服务器(例如运行着:MySQL,Java,这时如果这些进程正在使用swap,那么当1秒,10秒,100秒,进程会冻结被杀死) 而这都是非常致命的危险。如果确实是物理内存不足,而想使用swap作为’虚假‘内存来使用,但是如果将swappiness 设置为60,即使在服务器还有GB的内存没有在使用,任然非常容易出现问题。
对于一些很老的应用程序和为了作为cache使用,也许 swap的使用是一个有用的选择。 但是我们依然是建议将swappiness参数设置为20-30之间,尽管设置为0才是最推荐的选择。也许有人会认
其中对于swap的问题。 所有人都不希望使用到swap,但是对于在生产中的Linux服务器如何才能正确的使用,分配,管理,监控 swap?
首先是swappiness。这是一个Linux内核参数,并且可以通过sysctl来调控Linux系统采用什么机制来调配物理内存与cache交换。 在很多的Linux发行版本中其swappiness参数通常是设置为60,而这个设置是非常不合理的。 我们通常设置swappiness为0,在生产服务器中尽量避免使用swap分区。 在很多的层面来说使用swap是非常不正常的,例如在实际环境中,任何在使用swap的进程都将被冻结,而这对于多线程的服务器(例如运行着:MySQL,Java,这时如果这些进程正在使用swap,那么当1秒,10秒,100秒,进程会冻结被杀死) 而这都是非常致命的危险。如果确实是物理内存不足,而想使用swap作为’虚假‘内存来使用,但是如果将swappiness 设置为60,即使在服务器还有GB的内存没有在使用,任然非常容易出现问题。
对于一些很老的应用程序和为了作为cache使用,也许 swap的使用是一个有用的选择。 但是我们依然是建议将swappiness参数设置为20-30之间,尽管设置为0才是最推荐的选择。也许有人会认