LINUX服务器性能评估与调优

  • A+

一、系统性能评估

1.1CPU性能查看
1.1.1查看物理CPU的个数
  1. [root@kzkvm2020 ~]# cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l  
  2. 2  
  3. [root@kzkvm2020 ~]  
1.1.2查看核数
  1. [root@kzkvm2020 ~]# cat /proc/cpuinfo |grep "cpu cores"|wc -l  
  2. 32  
  3. [root@kzkvm2020 ~]  
1.1.3查看逻辑CPU个数
  1. [root@kzkvm2020 ~]# cat /proc/cpuinfo |grep "processor"|wc -l  
  2. 32  
  3. [root@kzkvm2020 ~]  

注:不支持超线程技术的情况下,物理cpu个数*核数=逻辑cpu个数。

1.2内存性能查看
  1. [root@kzkvm2020 ~]# free -g  
  2.               total        used        free      shared  buff/cache   available  
  3. Mem:            251          61           0           0         189         188  
  4. Swap:             7           1           6  
  5. [root@kzkvm2020 ~]# free -m  
  6.               total        used        free      shared  buff/cache   available  
  7. Mem:         257671       63137         957         113      193576      193426  
  8. Swap:          8191        1850        6341  
  9. [root@kzkvm2020 ~]# free  
  10.               total        used        free      shared  buff/cache   available  
  11. Mem:      263855556    64651936      981192      115892   198222428   198069780  
  12. Swap:       8388604     1895168     6493436  
  13. [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查看分区信息
  1. [root@kzkvm2020 ~]# fdisk -l  
  2. WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.  
  3.   
  4. 磁盘 /dev/sda:9596.0 GB, 9595997126656 字节,18742181888 个扇区  
  5. Units = 扇区 of 1 * 512 = 512 bytes  
  6. 扇区大小(逻辑/物理):512 字节 / 4096 字节  
  7. I/O 大小(最小/最佳):4096 字节 / 4096 字节  
  8. 磁盘标签类型:gpt  
  9. Disk identifier: 28BB383C-3B24-4AD0-80BB-643933B74ADD  
  10.   
  11.   
  12. #         Start          End    Size  Type            Name  
  13.  1         2048       411647    200M  EFI System      EFI System Partition  
  14.  2       411648      4605951      2G  Microsoft basic   
  15.  3      4605952  18742179839    8.7T  Linux LVM         
  16.   
  17. 磁盘 /dev/mapper/centos-root:536.9 GB, 536870912000 字节,1048576000 个扇区  
  18. Units = 扇区 of 1 * 512 = 512 bytes  
  19. 扇区大小(逻辑/物理):512 字节 / 4096 字节  
  20. I/O 大小(最小/最佳):4096 字节 / 4096 字节  
  21.   
  22.   
  23. 磁盘 /dev/mapper/centos-swap:8589 MB, 8589934592 字节,16777216 个扇区  
  24. Units = 扇区 of 1 * 512 = 512 bytes  
  25. 扇区大小(逻辑/物理):512 字节 / 4096 字节  
  26. I/O 大小(最小/最佳):4096 字节 / 4096 字节  
  27.   
  28.   
  29. 磁盘 /dev/mapper/centos-data:9048.2 GB, 9048174886912 字节,17672216576 个扇区  
  30. Units = 扇区 of 1 * 512 = 512 bytes  
  31. 扇区大小(逻辑/物理):512 字节 / 4096 字节  
  32. I/O 大小(最小/最佳):4096 字节 / 4096 字节  
  33.   
  34. [root@kzkvm2020 ~]  
1.3.2查看文件系统的磁盘占用空间
  1. [root@kzkvm2020 ~]# df -Th  
  2. 文件系统                类型      容量  已用  可用 已用% 挂载点  
  3. /dev/mapper/centos-root xfs       500G  8.4G  492G    2% /  
  4. devtmpfs                devtmpfs  126G     0  126G    0% /dev  
  5. tmpfs                   tmpfs     126G     0  126G    0% /dev/shm  
  6. tmpfs                   tmpfs     126G  107M  126G    1% /run  
  7. tmpfs                   tmpfs     126G     0  126G    0% /sys/fs/cgroup  
  8. /dev/sda2               xfs       2.0G  164M  1.9G    9% /boot  
  9. /dev/sda1               vfat      200M   12M  189M    6% /boot/efi  
  10. /dev/mapper/centos-data xfs       8.3T  2.9T  5.5T   35% /data  
  11. tmpfs                   tmpfs      26G   48K   26G    1% /run/user/0  
  12. tmpfs                   tmpfs      26G     0   26G    0% /run/user/1000  
  13. [root@kzkvm2020 ~]  
1.3.3查看硬盘的I/O性能

每隔2秒显示1次,显示3次

  1. [root@kzkvm2020 ~]# iostat -x 2 3  
  2. Linux 3.10.0-957.el7.x86_64 (kzkvm2020)     2021年10月08日     _x86_64_    (32 CPU)  
  3.   
  4. avg-cpu:  %user   %nice %system %iowait  %steal   %idle  
  5.            0.87    0.00    0.23    0.10    0.00   98.80  
  6.   
  7. Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util  
  8. 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  
  9. 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  
  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  
  11. 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  
  12.   
  13. avg-cpu:  %user   %nice %system %iowait  %steal   %idle  
  14.            1.28    0.00    0.47    0.20    0.00   98.04  
  15.   
  16. Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util  
  17. 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  
  18. 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  
  19. 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  
  20. 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  
  21.   
  22. avg-cpu:  %user   %nice %system %iowait  %steal   %idle  
  23.            1.66    0.00    0.61    0.11    0.00   97.62  
  24.   
  25. Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util  
  26. 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  
  27. 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  
  28. 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  
  29. 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  
  30.   
  31. [root@kzkvm2020 ~]  
1.3.4查看某一目录或文件夹占用大小
  1. [root@kzkvm2020 ~]# du -sh /data  
  2. 2.9T    /data  
  3. [root@kzkvm2020 ~]  
1.4查看平均负载

当系统响应很慢,但又找不到原因,这时就要查看平均负载了,看它是否有大量的进程在排队等待。

1.4.1uptime

它用来查看过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量。

  1. [root@kzkvm2020 ~]# uptime  
  2.  12:59:51 up 111 days,  5:01,  2 users,  load average: 1.03, 0.69, 0.51  
  3. [root@kzkvm2020 ~]  

load average三值大小一般不能大于系统CPU的个数。

系统有4个CPU,如load average三值长期大于4,说明CPU很繁忙,负载很高,可能会影响系统性能。

但偶尔大于4,一般不会影响系统性能。

如load average输出值小于CPU个数,则表示CPU有空闲时间片,比如本例中的输出,CPU是非常空闲的。

1.4.2top
  1. [root@kzkvm2020 ~]# top  
  2. top - 13:00:54 up 111 days,  5:03,  2 users,  load average: 0.99, 0.75, 0.54  
  3. Tasks: 456 total,   1 running, 455 sleeping,   0 stopped,   0 zombie  
  4. %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  
  5. KiB Mem : 26385555+total,   959100 free, 64657060 used, 19823939+buff/cache  
  6. KiB Swap:  8388604 total,  6493436 free,  1895168 used. 19806472+avail Mem   
  7.   
  8.   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                       
  9. 16248 polkitd   20   0  619916  12868   3756 S  35.3  0.0   7996:26 polkitd                                                                                                                                       
  10. 16217 dbus      20   0   62760   4160   1836 S  29.4  0.0   5850:06 dbus-daemon                                                                                                                                   
  11. 16246 root      20   0  396688   3936   3128 S  17.6  0.0   5826:15 accounts-daemon    

这里我们重点关注下面这行

  1. 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命令来判断系统是否繁忙,其中:

  1. procs  
  2. r:等待运行的进程数。  
  3. b:处在非中断睡眠状态的进程数。  
  4. w:被交换出去的可运行的进程数。  
  5.   
  6. memeory  
  7. swpd:虚拟内存使用情况,单位为KB。  
  8. free:空闲的内存,单位为KB。  
  9. buff:被用来作为缓存的内存数,单位为KB。  
  10.   
  11. swap  
  12. si:从磁盘交换到内存的交换页数量,单位为KB。  
  13. so:从内存交换到磁盘的交换页数量,单位为KB。  
  14.   
  15. io  
  16. bi:发送到块设备的块数,单位为KB。  
  17. bo:从块设备接受的块数,单位为KB。  
  18.   
  19. system  
  20. in:每秒的中断数,包括时钟中断。  
  21. cs:每秒的环境切换次数。  
  22.   
  23. cpu  
  24. 按cpu的总使用百分比来显示。  
  25. us:cpu使用时间。  
  26. sy:cpu系统使用时间。  
  27. id:闲置时间。  
1.4.3 vmstat
  1. [root@kzkvm2020 ~]# vmstat 2 3  
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----  
  3.  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  
  4.  0  0 1895168 963720    136 198239456    0    0     1     6    0    0  1  0 99  0  0  
  5.  0  0 1895168 963056    136 198239504    0    0     0   122 3394 14593  1  1 98  0  0  
  6.  1  0 1895168 963056    136 198239504    0    0     0    26 3287 13165  1  0 98  0  0  
  7. [root@kzkvm2020 ~]  

二、LINUX系统性能评估指标

2.1影响LINUX服务器性能的关键因素
2.1.1系统级
  1. CPU、内存、磁盘I/O带宽、网络I/O带宽  
2.1.2应用级
2.2系统性能评估标准
影响性能因素糟糕
CPUuser% + sys%< 70%user% + sys%= 85%user% + sys% >=90%
内存Swap In(si)=0 Swap Out(so)=0Per CPU with 10 page/sMore 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常用分析命令
  1. Vmstat、sar、iostat、netstat、free、ps、top等  
2.3.2常用组合方式
  1. vmstat、sar、iostat检测是否是CPU瓶颈  
  2. free、vmstat检测是否是内存瓶颈  
  3. iostat检测是否是磁盘I/O瓶颈  
  4. netstat检测是否是网络带宽瓶颈  
2.4CPU性能评估
2.4.1利用vmstat命令监控系统CPU
  1. [root@kzkvm2020 ~]# vmstat 2 3  
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----  
  3.  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  
  4.  0  0 1895168 953376    136 198248192    0    0     1     6    0    0  1  0 99  0  0  
  5.  0  0 1895168 953208    136 198248192    0    0     0    18 3255 12385  2  1 98  0  0  
  6.  0  0 1895168 953532    136 198248192    0    0     0    94 3266 11571  1  1 98  0  0  
  7. [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对系统每方面进行单独统计,但会增加系统开销,不过开销可以评估,对系统的统计结果不会有很大影响。

  1. [root@kzkvm2020 ~]# sar -u 3 5  
  2. Linux 3.10.0-957.el7.x86_64 (kzkvm2020)     2021年10月08日     _x86_64_    (32 CPU)  
  3.   
  4. 14时14分28秒     CPU     %user     %nice   %system   %iowait    %steal     %idle  
  5. 14时14分31秒     all      2.51      0.00      0.68      0.14      0.00     96.68  
  6. 14时14分34秒     all      1.30      0.00      0.61      0.06      0.00     98.03  
  7. 14时14分37秒     all      1.28      0.00      0.62      0.07      0.00     98.03  
  8. 14时14分40秒     all      1.26      0.00      0.57      0.01      0.00     98.15  
  9. 14时14分43秒     all      1.51      0.00      0.68      0.16      0.00     97.65  
  10. 平均时间:     all      1.57      0.00      0.63      0.09      0.00     97.71  
  11. [root@kzkvm2020 ~]  

关于上面参数的解释:

  1. %user列显示了用户进程消耗的CPU 时间百分比。  
  2. %nice列显示了运行正常进程所消耗的CPU 时间百分比。  
  3. %system列显示了系统进程消耗的CPU时间百分比。  
  4. %iowait列显示了IO等待所占用的CPU时间百分比  
  5. %steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作 。  
  6. %idle列显示了CPU处在空闲状态的时间百分比。  

一种特殊的情况:

在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致了整体CPU使用率不高,而应用缓慢现象的发生。

2.5内存性能评估
2.5.1free命令监控内存
  1. 应用程序可用内存/系统物理内存>70%,表示系统内存资源非常充足,不影响系统性能;  
  2. 应用程序可用内存/系统物理内存<20%,表示系统内存资源紧缺,需要增加系统内存;  
  3. 20%<应用程序可用内存/系统物理内存<70%,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。  
2.5.2利用vmstat命令监控内存
  1. [root@kzkvm2020 ~]# vmstat 2 1  
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----  
  3.  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  
  4.  2  0 1895168 939964    136 198261584    0    0     1     6    0    0  1  0 99  0  0  
  5. [root@kzkvm2020 ~]  

memory

  1. swpd--切换到内存交换区的内存数量(k为单位)。如swpd值偶尔非0,不影响系统性能  
  2. free--当前空闲的物理内存数量(k为单位)  
  3. buff--buffers cache的内存数量,一般对块设备的读写才需要缓冲  
  4. cache--page cached的内存数量  

一般作为文件系统cached,频繁访问的文件都会被cached,如cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。

swap

  1. si--由磁盘调入内存,也就是内存进入内存交换区的数量。  
  2. so--由内存调入磁盘,也就是内存交换区进入内存的数量。  

si、so的值长期不为0,表示系统内存不足。需增加系统内存。

2.6磁盘性能评估

对于频繁访问的文件或数据尽可能用内存读写代替直接磁盘I/O,效率高千倍。

将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。

对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。

裸设备优点:

  1. 数据可直接读写,不需经过操作系统级缓存,节省内存资源,避免内存资源争用;  
  2. 避免文件系统级维护开销,如文件系统需维护超级块、I-node等;  
  3. 避免了操作系统cache预读功能,减少了I/O请求  

使用裸设备的缺点是:

数据管理、空间管理不灵活,需要很专业的人来操作。

2.6.1利用iostat评估磁盘性能
  1. [root@kzkvm2020 ~]# iostat -d 1 2  
  2. Linux 3.10.0-957.el7.x86_64 (kzkvm2020)     2021年10月08日     _x86_64_    (32 CPU)  
  3.   
  4. Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
  5. sda               4.58        33.94       195.89  326338061 1883368688  
  6. dm-0              0.08         0.29         1.24    2747776   11946688  
  7. dm-1              0.06         0.03         0.23     272924    2165524  
  8. dm-2              4.52        33.63       194.42  323283648 1869239692  
  9.   
  10. Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
  11. sda               3.00         0.00        40.00          0         40  
  12. dm-0              0.00         0.00         0.00          0          0  
  13. dm-1              0.00         0.00         0.00          0          0  
  14. dm-2              3.00         0.00        40.00          0         40  
  15.   
  16. [root@kzkvm2020 ~]  

输出信息的意义:

  1. tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求""一次传输"请求的大小是未知的。  
  2.   
  3. kB_read/s:每秒从设备(drive expressed)读取的数据量;  
  4. kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;  
  5. kB_read:读取的总数据量;  
  6. kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。  

经验:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。

关于本命令的详细使用,后面再单独介绍。

2.6.2利用sar评估磁盘性能
  1. [root@kzkvm2020 ~]# sar -d 2 3  
  2. Linux 3.10.0-957.el7.x86_64 (kzkvm2020)     2021年10月08日     _x86_64_    (32 CPU)  
  3.   
  4. 14时39分41秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util  
  5. 14时39分43秒    dev8-0      7.50      0.00    888.00    118.40      0.17     26.73      8.33      6.25  
  6. 14时39分43秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  7. 14时39分43秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  8. 14时39分43秒  dev253-2      6.50      0.00    880.00    135.38      0.17     30.85      9.62      6.25  
  9.   
  10. 14时39分43秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util  
  11. 14时39分45秒    dev8-0      1.50      0.00     12.00      8.00      0.07     46.33     22.33      3.35  
  12. 14时39分45秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  13. 14时39分45秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  14. 14时39分45秒  dev253-2      1.50      0.00     12.00      8.00      0.07     46.33     22.33      3.35  
  15.   
  16. ……  
  17. [root@kzkvm2020 ~]  

参数含义:

  1. await--平均每次设备I/O操作等待时间(毫秒)  
  2. svctm--平均每次设备I/O操作的服务时间(毫秒)  
  3. %util--一秒中有百分之几的时间用于I/O操作  

对磁盘IO性能评判标准:

正常svctm应小于await值,而svctm和磁盘性能有关,CPU、内存负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。

  1. await值取决svctm和I/O队列长度以及I/O请求模式,  
  2. 如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,  
  3. 如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,  
  4. 此时可以通过更换更快的硬盘来解决问题。  

%util--衡量磁盘I/O重要指标,

如%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷工作,该磁盘可能存在瓶颈。

可优化程序或者 通过更换 更高、更快的磁盘。

2.7网络性能评估
  1. 通过ping命令检测网络的连通性  
  2. 通过netstat –i组合检测网络接口状况  
  3. 通过netstat –r组合检测系统的路由表信息  
  4. 通过sar –n组合显示系统的网络运行状态  

三、Linux服务器性能调优

3.1为磁盘I/O调整Linux内核电梯算法

选择文件系统后,该算法可以平衡低延迟需求,收集足够数据,有效组织对磁盘读写请求。

3.2禁用不必要的守护进程,节省内存和CPU资源

许多守护进程或服务通常非必需,消耗宝贵内存和CPU时间。将服务器置于险地。禁用可加快启动时间,释放内存。减少CPU要处理的进程数。

一些应被禁用的Linux守护进程,默认自动运行:

  1. 序号 守护进程 描述  
  2. 1 Apmd 高级电源管理守护进程  
  3. 2 Nfslock 用于NFS文件锁定  
  4. 3 Isdn ISDN Moderm支持  
  5. 4 Autofs 在后台自动挂载文件系统(如自动挂载CD-ROM)  
  6. 5 Sendmail 邮件传输代理  
  7. 6 Xfs X Window的字体服务器  
3.3关掉GUI
3.4清理不需要的模块或功能
  1. 服务器软件包中太多被启动的功能或模块实际上是不需要的(如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可以减少许多写入周期,极大地提高固态硬盘的使用寿命。

moonrong
  • 版权声明:本站原创文章,于2021年10月8日16:52:37,由 发表,共 17154 字。
  • 版权声明: 本文由于2021年10月8日16:52:37 发表在 好派笔记,共 17154 字。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: