Linux 性能优化
程序员文章站
2022-05-16 22:38:05
...
目录:
可以被性能优化的点
- 硬件层面
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,对于高并发网站,是远远不够的,需要将默认值调整到更大,调整方法有两种:
- Linux每个用户打开文件最大数临时设置方法
重启服务器该参数无效(可以加入rc.local中),命令行终端执行如下命令:
ulimit -n 65535
- 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
推荐阅读
-
Mysql linux安装日志_MySQL
-
优化:org.apache.commons.beanutils.BeanUtils.copyProperties方法复制对象属性时忽略null值
-
css 性能调优_html/css_WEB-ITnose
-
reentrantlock和synchronize哪个性能更高
-
Linux下PHP+MYSQL+APACHE配置过程 摘第1/2页
-
MySQL索引分析和优化
-
php中随机函数mt_rand()与rand()性能对比分析_PHP
-
解决使用SSH命令远程连接Linux服务器加载访问慢,连接超时断开等问题
-
技巧:PHP的优化,缓冲,压缩实际的解决方案
-
【lrzsz】安装lrzsz工具实现Linux和Windows系统之间文件便捷上传与下载