一本很老的书,还是RHEL3时代的,在陪GF的空隙一点点读完,把笔记整理一下发在这里,只包括自己不知道或者说容易忘记的内容,不代表调优指南。 1 Tuning the operating system 1.1 Disabling daemons 关闭不必要的后台进程。RHEL3中,默认启动的后台进程有: apmd 高级电源管理 autofs 自动挂载 cups 通用UNIX打印机系统 hpoj 惠普打印机支持 isdn 调制解调器 netfs nfslock portmap NFS支持 pcmcia PCMCIA支持 rhnsd 自动升级 sendmail 邮件转发程序 xfs 桌面程序 1.2 Shutting down the GUI runlevel: 0 halt立刻关机immediately shut down 1 single单人 2 multi-user without NFS(这个说明和一般的说法不太一样~) 3 full multi-user 5 X11 6 reboot 修改/etc/inittab如下: id:3:initdefault: #runlevel #4:2345:respawn:/sbin/mingetty tty4 #关闭多余控制台 注意:留3个,以免在被攻击的时候自己反而进不去了! 1.4 Changing kernel parameters /proc/loadavg 系统负载1/5/15分钟 /proc/stat 内核状态:进程/swap/磁盘IO /proc/cpuinfo CPU信息 /proc/meminfoo 内存信息 /proc/sys/fs/* linux可用文件数及磁盘配额 /proc/sys/kernel/* 进程号范围/系统日志级别 /proc/sys/net/* 网络细节 /proc/sys/vm/* 内存缓冲管理 1.7 Tuning the processor subsystem CPU超线程注意事项: 注意使用SMP的kernel 实际CPU数越多,超线程意义越小: 2核:提升15-25% 4核:提升1-1% 8核:提升0-5% 1.8 Tuning the memory subsystem 如果决定调整/proc/sys/vm/*的参数,最好一次只调整一个。 vm.dbflush前3个参数分别为: nfract 在buffer被转存到disk前允许的最大buffer比率 ndirty 将buffer转到disk时一次允许操作最大的buffer数 nfract_sync 转存时允许buffer中dirty数据的最大比率 vm.kswapd tries_base 一次swap传输时的pages数。如果swapping较大,适当增加该值 tries_min kswapd运行时交换的pages的最小数 swap_cluster kswapd一次写入pages的数。太小会增加IO次数,太大又要等待请求队列 1.9 Tuning the file subsystem 磁盘访问速度是ms级别的,而内存是ns,PCI是us。 磁盘IO是最关键的问题服务器举例: 文件/打印服务器:所有数据从磁盘读取 数据库服务器:大量IO,在内存和磁盘间交换数据 磁盘IO不是最关键的问题服务器举例: 邮件服务器:网络状况才是最关键的。 web服务器:网络和内存才是最关键的….. 1.9.5 The swap partition 创建多个swap区有助于提升swap性能 通常情况,多个swap采用顺序读写,即只有/etc/fstab中排名在前的swap区耗尽的情况下,才会使用下一个swap区; 可以在fstab中定义优先级,类似”/dev/sda2 swap swap sw,pri=5 0 0”的格式; 相同优先级的swap区,系统会并发使用,不同优先级之间依然要等待耗尽!——另外,如果相同优先级的swap区有一个性能较差,会连带影响整个swap性能。 1.10 Tuning the network subsystem 网络问题经常会导致其他伴生问题。比如:块大小太小会给CPU利用率带来显著影响;TCP连接数过多会带来内存使用率的急速上升…… 经常被打开的net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle的作用:缓存TCP交互中的客户端信息,包括交互时间、最大段大小,阻塞窗口。详见RFC1644。 net.ipv4.tcp_fin_timeout可以缩短TCP建连时最后发送FIN序列的时间,以便快速释放内存提供给新进连接请求。但是修改这个的时候也要谨慎,因为由此导致的死套接字数量可能引起内存溢出! net.core.wmem_max/net.core.rmem_max定义在每个TCP套接字创建时划分的内存大小,推荐设置8MB。 net.ipv4.tcp_wmem/net.ipv4.tcp_rmem的最后一个数字不能大于上面core的定义。 net.ipv4.tcp_max_syn_backlog队列存放半连接。这些连接可能是因为客户端的连接异常,也可能仅仅是因为服务器负载太高导致。除了半连接,这个配置对防范拒绝服务攻击也有效。 net.ipv4.ipfrag_low_thresh/net.ipv4.ipfrag_high_thresh规范ip碎片,一旦触底,内核会开始丢包。这对于NFS和samba等文件服务器很重要,建议设置为256和384MB。 2 Tuning tools 2.3 top STAT:S=SLEEPING,R=RUNNING,T=TRACED/STOPPED,D=INTERRUPTIBLE SLEEP,Z=ZOMBIE 2.3.1 Process priority and nice levels 优先级从19(最低)到-19(最高),默认是0。启动进程时指定nice -n 19 command,启动后改变renice 19 command 2.4 iostat tps:transfers per second,多个单独的IO请求,可以组合在一次transfer请求中。 Blk_read/s,Blk_wrtn/s:每秒的读写块个数。block大小和transfer大小一样各不相同。一般是1、2、4KB,采用如下命令查看:dumpe2fs -h /dev/sda1 | grep -F ‘Block Size’ 2.5 vmstat Process:r:等待运行的进程数,b:不可中断睡眠中的进程数 Swap:单位是KBps CPU:us:非内核时间,包括user和nice,id:在linux2.5.41前,这个数值包括了IOwait时间在内…… 2.11 ulimit -H和-S分别是hard和soft,开机启动指定的话,修改/etc/security/limits.conf即可。 2.12 mpstat 用来在多CPU的机器上查看每个CPU的情况。
笔记到此为止。之后的内容是DB2的调优,samba、ldap、lotus章节,就没看了……