调优 - 服务器内存“吃”swap的问题
swap内存当然会慢点,所以我们必须想尽办法尽量别用它。即使设置系统参数 vm.swappiness = 0 ,系统也会使用swap,而且测试中发现,swap的使用与Java服务进程没有必然联系,即使不起任何Java进程,swap也会被使用。
所以 vm.swappniess 参数的值只是告诉系统要“积极地”使用swap(设为100),还是“尽量别”使用swap(设为0)。
一般数据库服务器,需要将 vm.swappniess 参数设置成 0,以获得流畅的数据读写。
如果能“确保”系统不使用任何swap,可以使用如下命令真正关闭系统的swap内存:
swapoff -a
当然,需要反复使用如下命令“确保”swap真的不需要使用:
free –mt
原则就是:Mem:total 始终大于 Total:used,你要“确保”这个条件总是成立。通过编写一个脚本在服务器上反复执行一段时间是验证这个原则的办法。
谨慎:关闭swap就会产生严重后果——如果内存消耗完毕,系统很可能崩溃。
调优 - 系统比较
配置差不多的服务器,运行的服务相同,效果一个好一个差,那么就可以考虑比较系统上的进程和参数了:
分别执行 ps –ef / sysctl –a ,比较两台服务器上的 进程 / 系统配置,看看有何不同?
另外,ps auxf 可以显示父子进程的树状关系,ps –eLF 可以显示到线程。