- A+
一、系统性能评估
1.1CPU性能查看
1.1.1查看物理CPU的个数
- [root@kzkvm2020 ~]# cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
- 2
- [root@kzkvm2020 ~]#
1.1.2查看核数
- [root@kzkvm2020 ~]# cat /proc/cpuinfo |grep "cpu cores"|wc -l
- 32
- [root@kzkvm2020 ~]#
1.1.3查看逻辑CPU个数
- [root@kzkvm2020 ~]# cat /proc/cpuinfo |grep "processor"|wc -l
- 32
- [root@kzkvm2020 ~]#
注:不支持超线程技术的情况下,物理cpu个数*核数=逻辑cpu个数。
1.2内存性能查看
- [root@kzkvm2020 ~]# free -g
- total used free shared buff/cache available
- Mem: 251 61 0 0 189 188
- Swap: 7 1 6
- [root@kzkvm2020 ~]# free -m
- total used free shared buff/cache available
- Mem: 257671 63137 957 113 193576 193426
- Swap: 8191 1850 6341
- [root@kzkvm2020 ~]# free
- total used free shared buff/cache available
- Mem: 263855556 64651936 981192 115892 198222428 198069780
- Swap: 8388604 1895168 6493436
- [root@kzkvm2020 ~]#
total:内存总数used:已经使用的内存数free:空闲内存数shared:多个进程共享的内存总额
- buffers/cache:(已用)的内存数,即used-buffers-cached
- buffers/cache:(可用)的内存数,即free+buffers+cached
Buffer Cache用于针对磁盘块的读写;Page Cache用于针对文件inode的读写,这些Cache能有效地缩短I/O系统调用的时间。
对操作系统来说free/used是系统可用/占用的内存;对应用程序来说-/+ buffers/cache是可用/占用内存,因为buffers/cache很快就会被使用。
1.3硬盘查看
1.3.1查看分区信息
- [root@kzkvm2020 ~]# fdisk -l
- WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
- 磁盘 /dev/sda:9596.0 GB, 9595997126656 字节,18742181888 个扇区
- Units = 扇区 of 1 * 512 = 512 bytes
- 扇区大小(逻辑/物理):512 字节 / 4096 字节
- I/O 大小(最小/最佳):4096 字节 / 4096 字节
- 磁盘标签类型:gpt
- Disk identifier: 28BB383C-3B24-4AD0-80BB-643933B74ADD
- # Start End Size Type Name
- 1 2048 411647 200M EFI System EFI System Partition
- 2 411648 4605951 2G Microsoft basic
- 3 4605952 18742179839 8.7T Linux LVM
- 磁盘 /dev/mapper/centos-root:536.9 GB, 536870912000 字节,1048576000 个扇区
- Units = 扇区 of 1 * 512 = 512 bytes
- 扇区大小(逻辑/物理):512 字节 / 4096 字节
- I/O 大小(最小/最佳):4096 字节 / 4096 字节
- 磁盘 /dev/mapper/centos-swap:8589 MB, 8589934592 字节,16777216 个扇区
- Units = 扇区 of 1 * 512 = 512 bytes
- 扇区大小(逻辑/物理):512 字节 / 4096 字节
- I/O 大小(最小/最佳):4096 字节 / 4096 字节
- 磁盘 /dev/mapper/centos-data:9048.2 GB, 9048174886912 字节,17672216576 个扇区
- Units = 扇区 of 1 * 512 = 512 bytes
- 扇区大小(逻辑/物理):512 字节 / 4096 字节
- I/O 大小(最小/最佳):4096 字节 / 4096 字节
- [root@kzkvm2020 ~]#
1.3.2查看文件系统的磁盘占用空间
- [root@kzkvm2020 ~]# df -Th
- 文件系统 类型 容量 已用 可用 已用% 挂载点
- /dev/mapper/centos-root xfs 500G 8.4G 492G 2% /
- devtmpfs devtmpfs 126G 0 126G 0% /dev
- tmpfs tmpfs 126G 0 126G 0% /dev/shm
- tmpfs tmpfs 126G 107M 126G 1% /run
- tmpfs tmpfs 126G 0 126G 0% /sys/fs/cgroup
- /dev/sda2 xfs 2.0G 164M 1.9G 9% /boot
- /dev/sda1 vfat 200M 12M 189M 6% /boot/efi
- /dev/mapper/centos-data xfs 8.3T 2.9T 5.5T 35% /data
- tmpfs tmpfs 26G 48K 26G 1% /run/user/0
- tmpfs tmpfs 26G 0 26G 0% /run/user/1000
- [root@kzkvm2020 ~]#
1.3.3查看硬盘的I/O性能
每隔2秒显示1次,显示3次
- [root@kzkvm2020 ~]# iostat -x 2 3
- Linux 3.10.0-957.el7.x86_64 (kzkvm2020) 2021年10月08日 _x86_64_ (32 CPU)
- avg-cpu: %user %nice %system %iowait %steal %idle
- 0.87 0.00 0.23 0.10 0.00 98.80
- Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
- sda 0.01 0.07 0.32 4.26 33.97 195.98 100.32 0.16 35.31 1.71 37.83 8.40 3.85
- dm-0 0.00 0.00 0.01 0.07 0.29 1.24 38.21 0.00 45.00 3.06 48.26 12.25 0.10
- dm-1 0.00 0.00 0.01 0.06 0.03 0.23 8.01 0.00 44.01 3.94 49.03 0.90 0.01
- dm-2 0.00 0.00 0.31 4.21 33.65 194.51 100.99 0.16 35.37 1.68 37.88 8.30 3.75
- avg-cpu: %user %nice %system %iowait %steal %idle
- 1.28 0.00 0.47 0.20 0.00 98.04
- Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
- sda 0.00 0.00 0.00 3.50 0.00 24.00 13.71 0.18 43.29 0.00 43.29 23.71 8.30
- dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- dm-2 0.00 0.00 0.00 4.00 0.00 32.00 16.00 0.18 37.88 0.00 37.88 20.75 8.30
- avg-cpu: %user %nice %system %iowait %steal %idle
- 1.66 0.00 0.61 0.11 0.00 97.62
- Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
- sda 0.00 0.00 0.00 1.50 0.00 18.00 24.00 0.04 41.67 0.00 41.67 23.67 3.55
- dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- dm-2 0.00 0.00 0.00 1.00 0.00 10.00 20.00 0.04 62.50 0.00 62.50 35.50 3.55
- [root@kzkvm2020 ~]#
1.3.4查看某一目录或文件夹占用大小
- [root@kzkvm2020 ~]# du -sh /data
- 2.9T /data
- [root@kzkvm2020 ~]#
1.4查看平均负载
当系统响应很慢,但又找不到原因,这时就要查看平均负载了,看它是否有大量的进程在排队等待。
1.4.1uptime
它用来查看过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量。
- [root@kzkvm2020 ~]# uptime
- 12:59:51 up 111 days, 5:01, 2 users, load average: 1.03, 0.69, 0.51
- [root@kzkvm2020 ~]#
注:
load average三值大小一般不能大于系统CPU的个数。
系统有4个CPU,如load average三值长期大于4,说明CPU很繁忙,负载很高,可能会影响系统性能。
但偶尔大于4,一般不会影响系统性能。
如load average输出值小于CPU个数,则表示CPU有空闲时间片,比如本例中的输出,CPU是非常空闲的。
1.4.2top
- [root@kzkvm2020 ~]# top
- top - 13:00:54 up 111 days, 5:03, 2 users, load average: 0.99, 0.75, 0.54
- Tasks: 456 total, 1 running, 455 sleeping, 0 stopped, 0 zombie
- %Cpu(s): 2.9 us, 1.5 sy, 0.0 ni, 95.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- KiB Mem : 26385555+total, 959100 free, 64657060 used, 19823939+buff/cache
- KiB Swap: 8388604 total, 6493436 free, 1895168 used. 19806472+avail Mem
- PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- 16248 polkitd 20 0 619916 12868 3756 S 35.3 0.0 7996:26 polkitd
- 16217 dbus 20 0 62760 4160 1836 S 29.4 0.0 5850:06 dbus-daemon
- 16246 root 20 0 396688 3936 3128 S 17.6 0.0 5826:15 accounts-daemon
这里我们重点关注下面这行
- top - 13:00:54 up 111 days, 5:03, 2 users, load average: 0.99, 0.75, 0.54
如果每个逻辑cpu当前的活动进程不大于3,则系统性能良好;如果每个逻辑cpu当前的活动进程不大于4,表示可以接受;如果每个逻辑cpu当前的活动进程大于5,则系统性能问题严重。
注:计算方法:负载值/逻辑cpu个数
另外还可以结合vmstat命令来判断系统是否繁忙,其中:
- procs
- r:等待运行的进程数。
- b:处在非中断睡眠状态的进程数。
- w:被交换出去的可运行的进程数。
- memeory
- swpd:虚拟内存使用情况,单位为KB。
- free:空闲的内存,单位为KB。
- buff:被用来作为缓存的内存数,单位为KB。
- swap
- si:从磁盘交换到内存的交换页数量,单位为KB。
- so:从内存交换到磁盘的交换页数量,单位为KB。
- io
- bi:发送到块设备的块数,单位为KB。
- bo:从块设备接受的块数,单位为KB。
- system
- in:每秒的中断数,包括时钟中断。
- cs:每秒的环境切换次数。
- cpu
- 按cpu的总使用百分比来显示。
- us:cpu使用时间。
- sy:cpu系统使用时间。
- id:闲置时间。
1.4.3 vmstat
- [root@kzkvm2020 ~]# vmstat 2 3
- procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
- r b swpd free buff cache si so bi bo in cs us sy id wa st
- 0 0 1895168 963720 136 198239456 0 0 1 6 0 0 1 0 99 0 0
- 0 0 1895168 963056 136 198239504 0 0 0 122 3394 14593 1 1 98 0 0
- 1 0 1895168 963056 136 198239504 0 0 0 26 3287 13165 1 0 98 0 0
- [root@kzkvm2020 ~]#
二、LINUX系统性能评估指标
2.1影响LINUX服务器性能的关键因素
2.1.1系统级
- CPU、内存、磁盘I/O带宽、网络I/O带宽
2.1.2应用级
2.2系统性能评估标准
影响性能因素 | 好 | 坏 | 糟糕 |
---|---|---|---|
CPU | user% + sys%< 70% | user% + sys%= 85% | user% + sys% >=90% |
内存 | Swap In(si)=0 Swap Out(so)=0 | Per CPU with 10 page/s | More Swap In & Swap Out |
磁盘 | iowait % < 20% | iowait % =35% | iowait % >= 50% |
其中:
%user:表示CPU处在用户模式下的时间百分比。%sys:表示CPU处在系统模式下的时间百分比。%iowait:表示CPU等待输入输出完成时间的百分比。swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAMswap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK
2.3 系统性能分析工具
2.3.1常用分析命令
- Vmstat、sar、iostat、netstat、free、ps、top等
2.3.2常用组合方式
- vmstat、sar、iostat检测是否是CPU瓶颈
- free、vmstat检测是否是内存瓶颈
- iostat检测是否是磁盘I/O瓶颈
- netstat检测是否是网络带宽瓶颈
2.4CPU性能评估
2.4.1利用vmstat命令监控系统CPU
- [root@kzkvm2020 ~]# vmstat 2 3
- procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
- r b swpd free buff cache si so bi bo in cs us sy id wa st
- 0 0 1895168 953376 136 198248192 0 0 1 6 0 0 1 0 99 0 0
- 0 0 1895168 953208 136 198248192 0 0 0 18 3255 12385 2 1 98 0 0
- 0 0 1895168 953532 136 198248192 0 0 0 94 3266 11571 1 1 98 0 0
- [root@kzkvm2020 ~]#
procs.r
运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU
procs.b
在等待资源的进程数,比如正在等待I/O、或者内存交换等。
CPU.us
用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。
CPU.sy
内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。
根据经验,us+sy
的参考值为80%,如果us+sy
大于 80%说明可能存在CPU资源不足。
2.4.2利用sar命令监控系统CPU
sar对系统每方面进行单独统计,但会增加系统开销,不过开销可以评估,对系统的统计结果不会有很大影响。
- [root@kzkvm2020 ~]# sar -u 3 5
- Linux 3.10.0-957.el7.x86_64 (kzkvm2020) 2021年10月08日 _x86_64_ (32 CPU)
- 14时14分28秒 CPU %user %nice %system %iowait %steal %idle
- 14时14分31秒 all 2.51 0.00 0.68 0.14 0.00 96.68
- 14时14分34秒 all 1.30 0.00 0.61 0.06 0.00 98.03
- 14时14分37秒 all 1.28 0.00 0.62 0.07 0.00 98.03
- 14时14分40秒 all 1.26 0.00 0.57 0.01 0.00 98.15
- 14时14分43秒 all 1.51 0.00 0.68 0.16 0.00 97.65
- 平均时间: all 1.57 0.00 0.63 0.09 0.00 97.71
- [root@kzkvm2020 ~]#
关于上面参数的解释:
- %user列显示了用户进程消耗的CPU 时间百分比。
- %nice列显示了运行正常进程所消耗的CPU 时间百分比。
- %system列显示了系统进程消耗的CPU时间百分比。
- %iowait列显示了IO等待所占用的CPU时间百分比
- %steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作 。
- %idle列显示了CPU处在空闲状态的时间百分比。
一种特殊的情况:
在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致了整体CPU使用率不高,而应用缓慢现象的发生。
2.5内存性能评估
2.5.1free命令监控内存
- 应用程序可用内存/系统物理内存>70%,表示系统内存资源非常充足,不影响系统性能;
- 应用程序可用内存/系统物理内存<20%,表示系统内存资源紧缺,需要增加系统内存;
- 20%<应用程序可用内存/系统物理内存<70%,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。
2.5.2利用vmstat命令监控内存
- [root@kzkvm2020 ~]# vmstat 2 1
- procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
- r b swpd free buff cache si so bi bo in cs us sy id wa st
- 2 0 1895168 939964 136 198261584 0 0 1 6 0 0 1 0 99 0 0
- [root@kzkvm2020 ~]#
memory
- swpd--切换到内存交换区的内存数量(k为单位)。如swpd值偶尔非0,不影响系统性能
- free--当前空闲的物理内存数量(k为单位)
- buff--buffers cache的内存数量,一般对块设备的读写才需要缓冲
- cache--page cached的内存数量
一般作为文件系统cached,频繁访问的文件都会被cached,如cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
- si--由磁盘调入内存,也就是内存进入内存交换区的数量。
- so--由内存调入磁盘,也就是内存交换区进入内存的数量。
si、so的值长期不为0,表示系统内存不足。需增加系统内存。
2.6磁盘性能评估
对于频繁访问的文件或数据尽可能用内存读写代替直接磁盘I/O,效率高千倍。
将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。
对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。
裸设备优点:
- 数据可直接读写,不需经过操作系统级缓存,节省内存资源,避免内存资源争用;
- 避免文件系统级维护开销,如文件系统需维护超级块、I-node等;
- 避免了操作系统cache预读功能,减少了I/O请求
使用裸设备的缺点是:
数据管理、空间管理不灵活,需要很专业的人来操作。
2.6.1利用iostat评估磁盘性能
- [root@kzkvm2020 ~]# iostat -d 1 2
- Linux 3.10.0-957.el7.x86_64 (kzkvm2020) 2021年10月08日 _x86_64_ (32 CPU)
- Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
- sda 4.58 33.94 195.89 326338061 1883368688
- dm-0 0.08 0.29 1.24 2747776 11946688
- dm-1 0.06 0.03 0.23 272924 2165524
- dm-2 4.52 33.63 194.42 323283648 1869239692
- Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
- sda 3.00 0.00 40.00 0 40
- dm-0 0.00 0.00 0.00 0 0
- dm-1 0.00 0.00 0.00 0 0
- dm-2 3.00 0.00 40.00 0 40
- [root@kzkvm2020 ~]#
输出信息的意义:
- tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
- kB_read/s:每秒从设备(drive expressed)读取的数据量;
- kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
- kB_read:读取的总数据量;
- kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。
经验:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。
关于本命令的详细使用,后面再单独介绍。
2.6.2利用sar评估磁盘性能
- [root@kzkvm2020 ~]# sar -d 2 3
- Linux 3.10.0-957.el7.x86_64 (kzkvm2020) 2021年10月08日 _x86_64_ (32 CPU)
- 14时39分41秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
- 14时39分43秒 dev8-0 7.50 0.00 888.00 118.40 0.17 26.73 8.33 6.25
- 14时39分43秒 dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 14时39分43秒 dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 14时39分43秒 dev253-2 6.50 0.00 880.00 135.38 0.17 30.85 9.62 6.25
- 14时39分43秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
- 14时39分45秒 dev8-0 1.50 0.00 12.00 8.00 0.07 46.33 22.33 3.35
- 14时39分45秒 dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 14时39分45秒 dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 14时39分45秒 dev253-2 1.50 0.00 12.00 8.00 0.07 46.33 22.33 3.35
- ……
- [root@kzkvm2020 ~]#
参数含义:
- await--平均每次设备I/O操作等待时间(毫秒)
- svctm--平均每次设备I/O操作的服务时间(毫秒)
- %util--一秒中有百分之几的时间用于I/O操作
对磁盘IO性能评判标准:
正常svctm应小于await值,而svctm和磁盘性能有关,CPU、内存负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。
- await值取决svctm和I/O队列长度以及I/O请求模式,
- 如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,
- 如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,
- 此时可以通过更换更快的硬盘来解决问题。
%util--衡量磁盘I/O重要指标,
如%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷工作,该磁盘可能存在瓶颈。
可优化程序或者 通过更换 更高、更快的磁盘。
2.7网络性能评估
- 通过ping命令检测网络的连通性
- 通过netstat –i组合检测网络接口状况
- 通过netstat –r组合检测系统的路由表信息
- 通过sar –n组合显示系统的网络运行状态
三、Linux服务器性能调优
3.1为磁盘I/O调整Linux内核电梯算法
选择文件系统后,该算法可以平衡低延迟需求,收集足够数据,有效组织对磁盘读写请求。
3.2禁用不必要的守护进程,节省内存和CPU资源
许多守护进程或服务通常非必需,消耗宝贵内存和CPU时间。将服务器置于险地。禁用可加快启动时间,释放内存。减少CPU要处理的进程数。
一些应被禁用的Linux守护进程,默认自动运行:
- 序号 守护进程 描述
- 1 Apmd 高级电源管理守护进程
- 2 Nfslock 用于NFS文件锁定
- 3 Isdn ISDN Moderm支持
- 4 Autofs 在后台自动挂载文件系统(如自动挂载CD-ROM)
- 5 Sendmail 邮件传输代理
- 6 Xfs X Window的字体服务器
3.3关掉GUI
3.4清理不需要的模块或功能
- 服务器软件包中太多被启动的功能或模块实际上是不需要的(如Apache中的许多功能模块),禁用掉有助于提高系统内存可用量,腾出资源给那些真正需要的软件,让它们运行得更快。
3.5禁用控制面板
在Linux中,有许多流行的控制面板,如Cpanel,Plesk,Webmin和phpMyAdmin等,禁用释放出大约120MB内存,内存使用量大约下降30-40%。
3.6改善Linux Exim服务器性能
使用DNS缓存守护进程,可降低解析DNS记录需要的带宽和CPU时间,DNS缓存通过消除每次都从根节点开始查找DNS记录的需求,从而改善网络性能。
Djbdns是一个非常强大的DNS服务器,它具有DNS缓存功能,Djbdns比BIND DNS服务器更安全,性能更好,可以直接通过http://cr.yp.to/下载,或通过Red Hat提供的软件包获得。
3.7使用AES256增强gpg文件加密安全
为提高备份文件或敏感信息安全,许多Linux系统管理员都使用gpg进行加密,在使用gpg时,最好指定gpg使用AES256加密算法,AES256使用256位密钥,它是一个开放的加密算法,美国国家安全局(NSA)使用它保护绝密信息。
3.8远程备份服务安全
安全是选择远程备份服务最重要的因素。
为了保证备份文件100%的安全,备份服务公司提供远程备份服务器,使用scp脚本或RSYNC通过SSH传输数据,这样,没有人可以直接进入和访问远程系统,因此,也没有人可以从备份服务删除数据。在选择远程备份服务提供商时,最好从多个方面了解其服务强壮性,如果可以,可以亲自测试一下。
3.9更新默认内核参数设置
为了顺利和成功运行企业应用程序,如数据库服务器,可能需要更新一些默认的内核参数设置,例如,2.4.x系列内核消息队列参数msgmni有一个默认值(例如,共享内存,或shmmax在Red Hat系统上默认只有33554432字节),它只允许有限的数据库并发连接,下面为数据库服务器更好地运行提供了一些建议值(来自IBM DB2支持网站):
kernel.shmmax=268435456 (32位)kernel.shmmax=1073741824 (64位)kernel.msgmni=1024fs.file-max=8192kernel.sem=”250 32000 32 1024″
3.10优化TCP
优化TCP协议有助于提高网络吞吐量,跨广域网的通信使用的带宽越大,延迟时间越长时,建议使用越大的TCP Linux大小,以提高数据传输速率,TCP Linux大小决定了发送主机在没有收到数据传输确认时,可以向接收主机发送多少数据。
3.11选择正确的文件系统
使用ext4文件系统取代ext3
● Ext4是ext3文件系统的增强版,扩展了存储限制
●具有日志功能,保证高水平的数据完整性(在非正常关闭事件中)
●非正常关闭和重启时,它不需要检查磁盘(这是一个非常耗时的动作)
●更快的写入速度,ext4日志优化了硬盘磁头动作
3.12使用noatime文件系统挂载选项
在文件系统启动配置文件fstab中使用noatime选项,如果使用了外部存储,这个挂载选项可以有效改善性能。
3.13调整Linux文件描述符限制
Linux限制了任何进程可以打开的文件描述符数量,默认限制是每进程1024,这些限制可能会阻碍基准测试客户端(如httperf和apachebench)和Web服务器本身获得最佳性能,Apache每个连接使用一个进程,因此不会受到影响,但单进程Web服务器,如Zeus是每连接使用一个文件描述符,因此很容易受默认限制的影响。
打开文件限制是一个可以用ulimit命令调整的限制,ulimit -aS命令显示当前的限制,ulimit -aH命令显示硬限制(在未调整/proc中的内核参数前,你不能增加限制)。
对于运行在Linux上的第三方应用程序,一样有许多性能优化技巧,这些技巧可以帮助你提高Linux服务器的性能,降低运行成本。
3.14将日志文件转移到内存中
当一台机器处于运行中时,最好是将系统日志放在内存中,当系统关闭时再将其复制到硬盘,当你运行一台开启了syslog功能的笔记本电脑或移动设备时,ramlog可以帮助你提高系统电池或移动设备闪存驱动器的寿命,使用ramlog的一个好处是,不用再担心某个守护进程每隔30秒向syslog发送一条消息,放在以前,硬盘必须随时保持运转,这样对硬盘和电池都不好。
3.15先打包,后写入
在内存中划分出固定大小的空间保存日志文件,这意味着笔记本电脑硬盘不用一直保持运转,只有当某个守护进程需要写入日志时才运转,注意ramlog使用的内存空间大小是固定的,否则系统内存会很快被用光,如果笔记本使用固态硬盘,可以分配50-80MB内存给ramlog使用,ramlog可以减少许多写入周期,极大地提高固态硬盘的使用寿命。