配置 sysctl.conf 系统参数(vi /etc/sysctl.conf)
参数:
1.内存&缓存
kernel.sysrq = 0 内核设置验证为0
kernel.core_uses_pid = 1 控制内核的系统请求调试功能开启,控制核心转储附加PID到核心文件名,适用于多线程
kernel.msgmnb = 65536 每个消息队列的最大字节限制
kernel.msgmax = 65536 每个消息的最大size
kernel.shmmax = 68719476736定义了共享内存段的最大尺寸(以字节为单位,缺省值为2097152)
kernel.shmall = 4294967296 表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152)
kernel.shmmni = 4096 设置系统范围内共享内存段的最大数量,默认4096
2.信号量相关:
kernel.sem = 50100 64128000 50100 1280
系统默认值,SA未优化
含义:
#ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
SEMMNI
SEMMNI定义了max number of arrays的大小,表示系统内的最大semaphore set大小,这个缺省值128差不多了.
SEMMSL
SEMMSL 定义了max semaphores pre array的大小,表示每个semaphore set的最大semaphore数.oracle进程获得系统的一个semaphore set,oracle进程内的每个线程需要一个semaphore,假如你的系统内只有一个oracle实例,你的SEMMSL的值需要等于或稍大于 (oracle中定义的最大PROCESSES数+10),如果是MTS模式,可以适当放小.
SEMMNS
SEMMNS定义 了max semaphores system wide的大小,表示系统内允许的最大semaphore set大小,系统缺省大小为(SEMMNI*SEMMSL),oracle推荐的设置为系统内所有数据库的PROCESSES参数的总和,加上最大的的那个PROCESSES,然后加上10.
SEMOPM
SEMOPM定义了每个semop系统调用能够操作的最大semaphore数,semop系统调用主要是一个semaphore set的semaphore操作,这个值系统缺省为32,建议设置等于SEMMSL.
另:
Httpd重启失败,信号量过多,是因为我们关闭apache的时候使用了kill -9 来关闭程序来造成的,后续优化改进。
3.网桥设置,iptable不对网桥进行处理
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
4.窗口
net.core.rmem_default = 1048576 默认的接受窗口大小为1M
net.core.rmem_max = 4194304 接收窗口大小最大
net.core.wmem_default = 262144 默认的发送窗口大小
net.core.wmem_max = 1048576 发送窗口最大
5.网络
net.core.netdev_max_backlog = 10000
当网卡接受数据包的速度大于内核处理数据包的速度,会有一个队列保存这些数据包,这个参数表示这个队列最大值
net.ipv4.conf.default.rp_filter = 1控制源路由验证
net.ipv4.conf.default.accept_source_route = 0不接受源路由
net.ipv4.netfilter.ip_conntrack_max = 655360 允许最大跟踪连接条目,是在内核内存中netfiter可以同时处理的任务(跟踪连接条目),对于带有超过1G的系统,CONNTRACK_MAX 的默认值会被限制在65536(可手动设置最大值)
net.ipv4.ip_forward = 0 控制IP包转发
net.ipv4.ip_local_port_range = 9000 65000 查看端口范围,不要超过1024到65535,1024以下系统使用,65535以上会提示失败
net.ipv4.tcp_tw_recycle = 1开启TCP连接中TIME-WAIT sockets 的快速收回功能
net.ipv4.tcp_max_syn_backlog = 4096表示SYN队列的长度,默认为1024 ,加大队列的长度为4096,可以容纳更多等待连接的网络连接数
net.ipv4.tcp_keepalive_intvl = 7 探索消息发送的频率,乘以 tcp_keepalive_probes 就得到从开始探索以来没有响应的连接杀除时间,默认为75秒,改小可以加速丢弃没有活动的连接
net.ipv4.tcp_timestamps=1 启动TCP时间戳
net.ipv4.tcp_keepalive_time = 72 当 keepalive 启用的时候,TCP发送 keepalive 消息的频率,缺省是7200,也就是2小时
net.ipv4.tcp_keepalive_probes = 9 TCP 发送keepalive探测已确定该连接已断开的次数,在认定连接失效前,发送多少个TCP的探测包。
net.ipv4.tcp_syncookies = 0关闭TCP SYNCOOKIES 的使用
net.ipv4.tcp_tw_reuse = 0表示开启重用,允许将 TIME-WAIT sockets 重新用于新的tcp连接
net.ipv4.tcp_tw_recycle = 1开启TCP连接中TIME-WAIT sockets 的快速收回功能
net.ipv4.tcp_fin_timeout = 30表示如何套接字由本端要求关闭,这个参数决定他保持在FIN-WAIT-2 状态的时间
6.进程
fs.file-max = 76724600 进程可以同时打开的做句柄数,直接限制了最大并发连接数,文件句柄设置表示在Linux系统的可以打开的文件数量
fs.aio-max-nr = 1048576此参数限制并发未完成的异步请求数目,应该设置避免I/O子系统故障
vm.overcommit_memory = 0内存分配策略,可选0 1 2
0,表示内存将检查是否有足够的可用内存供应用进程使用,如果有,允许申请,否则,内存申请失败,将错误返回给应用进程
1,表示内存允许分配所有的物理内存,而不管当前的内存状态如何
2,示内存允许分配所有的物理内存和交换空间所有的内存
vm.zone_reclaim_mode=1开启当内存不够用时就直接回收内存
vm.dirty_background_ratio = 10此参数指定了当文件系统缓存脏页数量达到内存的百分之多少时,就会出发 pdflush/flush/kdmflush 等后台回写进程运行,将一定的脏页异步刷入内存,如果我虚拟服务器内存为32G,也就是3.2G的数据,在完事之前可以设置在RAM中
vm.dirty_background_bytes = 1024000000优化内核进程刷脏页阈值,尽量让后台进程刷脏页
vm.dirty_ratio = 60 优化用户进程刷脏页阈值,脏页超过60%才需要用户刷
vm.dirty_bytes = 0 同上,如果设置了上面的参数,这个就要设置为0,反而
vm.dirty_writeback_centisecs = 500 优化老化脏页刷新唤醒间隔500表示5秒
vm.dirty_expire_centisecs = 3000优化老化脏页阈值,30秒以前的脏页将被刷到磁盘
vm.swappiness=0 关闭交换分区