欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux 性能优化

程序员文章站 2022-05-16 22:38:05
...

目录:

  1. 可以被性能优化的点
  2. 性能评估表
  3. Linux 内核优化

可以被性能优化的点

  • 硬件层面
    CPU、内存、硬盘容量、硬盘I/O读写、网卡自身带宽容量等,通常对硬件层面因素的优化主要是考虑增加其配置
  • 软件层面
    Linux系统下各个应用程序:Nginx、Tomcat、MYSQL、Redis、程序代码、网站代码等,对其网站代码、软件的配置文件参数优化、优化软件架构、是否增加集群、分布式结构以扩展软件的本身的性能
  • 系统层面
    选择比较稳定的Linux操作系统发行版、减少不必要的服务、端口、修改Linux内核自身的限制、对Linux内核实施优化(打开端口数、进程数、文件数等)
  • 网络层面
    引入性能比较强硬件网络设备、交换机、路由器、防火墙,增加网络设备的背板带宽、带宽容量、吞吐率、运营商购买带宽容量等


性能评估表

糟糕
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%

常用系统性能组合分析命令:

top uptime                          检查系统整体的负载、承受能力;
vmstat、sar、iostat	、top		    检测是否是CPU瓶颈;
free、vmstat					    检测是否是内存瓶颈;
iostat、iotop						检测是否是磁盘I/O瓶颈;
netstat、iftop					    检测是否是网络带宽瓶颈。


Linux 内核优化

Linux内核(操作系统)最初设计的时候,做了很多的限制,限制很多参数、资源使用,为了防止Linux系统资源不被恶意使用、大量的使用而导致资源枯竭而设计内核限制
在生产环境中,由于某些软件、应用程序发挥最大的性能,使用Linux内核默认资源显然不够的,要对Linux内核资源进行重新修改和调整,对Linux内核资源进行优化

文件打开数优化
默认Linux内核对每个用户设置了打开文件最大数为1024,对于高并发网站,是远远不够的,需要将默认值调整到更大,调整方法有两种:

  1. Linux每个用户打开文件最大数临时设置方法
    重启服务器该参数无效(可以加入rc.local中),命令行终端执行如下命令:
ulimit -n 65535
  1. Linux每个用户打开文件最大数永久设置方法,将如下代码加入内核限制文件/etc/security/limits.conf的末尾:
* 	soft 	noproc			65535
* 	hard 	noproc			65535
* 	soft 	nofile			65535
* 	hard 	nofile			65535

如上设置为对每个用户分别设置nofile、noproc最大数,如果需要对Linux整个系统设置文件最大数限制,需要修改/proc/sys/fs/file-max中的值,该值为Linux总文件打开数。
例如设置为:

echo 3865161233 >/proc/sys/fs/file-max
vi /etc/sysctl.conf

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.ip_local_port_range = 4000 65000

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_orphans = 16384

#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。

net.ipv4.ip_conntrack_max = 25000000

net.ipv4.netfilter.ip_conntrack_max=25000000

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180

net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

# 重新加载内核参数
sysctl -p

Linux 性能优化
Linux 性能优化

回到目录