/etc/sysctl.conf这个目录主要是配置一些系统信息,而且它的内容全部是对应于/proc/sys/这个目录的子目录及文件。这样或许你不理解,先看看我的系统/etc/sysctl.conf这个文件里面有什么内容:cat /etc/sysctl.conf
fs.file-max = 3145728
fs.suid_dumpable = 1
kernel.core_uses_pid = 1
kernel.printk = 4 4 1 7
kernel.shmmax = 7516192768
kernel.shmall = 1835008
net.ipv4.ip_local_port_range = 8192 65535
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.netfilter.ip_conntrack_max = 1048576
net.ipv4.tcp_max_tw_buckets = 1048576
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rmem = 4096 87380 4120576
net.ipv4.tcp_wmem = 4096 16384 4120576
#vm.nr_hugepages = 0
其实每个'.'分割的就代表一个目录,例如,fs.file-max也就代表/proc/sys/fs/file-max。那么/proc/sys/是用来做什么的呢?大家都知道/proc是每次系统启动的时候都要重新挂载的,它反映了系统内存里面的一些状态。通过/proc/可以很好的了解到当前系统的一些信息。而/proc/sys/则是这些信息的一小部分而已。你可以通过ls /proc/查看,里面还是不是有很多其他的数字命名的目录?那就是单个进程的信息了,那个数字就是进程ID。例如之前写过一篇关于two many open files解决办法的文章,那么查看某个进程打开多少FD,则可以通过ls /proc/<pid>/fd | wc -l来统计。
常用的有哪些呢?刚入门,自己用到的选项也不多。
1. vm.nr_hugepages/vm.hugetlb_shm_group # 第一个表示设置系统有多少大页内存,第二个表示哪些用户组的进程可以使用大页内存
2. vm.swappiness # 如果设置为0表示禁用swap,否则值越大使用swap的可能性越高
3. vm.overcommit_memory/vm.overcommit_ratio # 这个设置是否可以超额分配内存,当然这是利用的virtual memory机制实现的。
前面那些参数都是在测试有什么方法防止mysqld使用swap,或者能否被避免Linux的OOM机制,详情请点击这里
还有在Linux上装Oracle会要设置kernel.shmmax这个参数吧(>_<,我还没在linux下安装过~) 这个也可以在/etc/sysctl.conf里面设置。
前面说过/etc/sysctl.conf与目录/proc/sys/的关系,那么常见设置方法有三个:
1. echo value > /proc/sys/xx/yy
2. vi /etc/sysctl.conf #vi编辑,然后添加设置 ; sysctl -p #生效
3. sysctl -w kernel.domainname="example.com" #利用-w生效
另外需要注意,/etc/sysctl.conf 与 sysctl命令只有root用户才有权限执行
关于/etc/sysctl.conf的介绍就差不多了,理解了这个文件的作用,更关键的是要知道里面每项的含义,以及怎么设置来调优系统。不懂的太多了,只能靠慢慢积累了~
另外几个系统缓存参数设置参见这里(感觉这篇文章写得不错~)
Linux系统控制文件 /etc/sysctl.conf
内容版权声明:除非注明,否则皆为本站原创文章。