服务器优化

服务器负载分析

在性能调优时,需要先对服务器负载进行分析,通常而言,我们主要分析
CPU 使用率内存使用率磁盘 I/O服务器负载和带宽使用情况

CPU 使用率

在实际情况下,为了应对一下突发性的请求压力,服务器 CPU 使用率一般需要在 75%以下。如果一
台服务器的 CPU 使用率多次高于 75%`,这时候就考虑增加新的服务器。

sudo yum install epel-release -y 
sudo yum install htop -y

监控 CPU 使用率我推荐大家使用htop工具,可以非常直观看到 CPU 使用率、内存使用率、及负载等信息
在这里插入图片描述
cpu 负载
如上图所示,这是一个 4 核 CPU 服务器,在截图的时候其中 3 核 CPU 使用率都超过了 75%

再观察一会发现所有 CPU 的使用率都在 85%左右徘徊,说明 CPU 负载很高了,需要考虑增加新的服务器

内存使用率

内存使用率反应的是内存的使用情况

内存用于存放程序的代码及数据,一般分为物理内存和虚拟内存,其中物理内存指的是服务器的内存,而虚拟内存指的是硬盘的一块空间。

当物理内存使用率达到 100%时将会使用虚拟内存
需要注意的是,虚拟内存的读写速度远远低于物理内存,如果程序被放在了虚拟内存执行,那么程序的执行效率会变得很低

一般而言,服务器的物理内存应该保持在 80%以下,虚拟内存使用率 保持在 0%
在这里插入图片描述

内存使用率
上面显示了服务器的内存使用情况:总内存 16G,使用了10G左右,内存使用率 62%,可以继续使用,同时关闭了 Swap 虚拟内存。

在下 MEM%栏中显示了单个进程的内存使用率

磁盘 I/O

磁盘 I/O 指的是磁盘的读写,在软件系统中,日志、文件操作、数据库操作都会造成磁盘读写压力

其中又以数据库操作为甚,在高并发情况下往往数据库会首先成为系统的瓶颈

# 查看磁盘总体读写情况, 1 代表每 1 秒读取一次数据
iostat -x 1

磁盘 IO
输入 iostat 命令后,磁盘总体读写情况如上所示。磁盘负载主要关注 2 个
指标:%idle,%util

  • %idle:表示 CPU 除去等待磁盘 I/O 以外的空闲时间百分比,这个指标应该要保证在70%以上
  • %util:该设备用于 I/O 操作的时间百分比,这个指标需要保证在 70%以下
    到达100%时表示已经满负载。为了降低磁盘负载,可以采用性能更高的磁盘(OSD,PCIE)或者降低磁盘的操作频率(异步写、合并写

平均负载

平均负载指的是单位时间内平均的活跃进程数,是一个表示服务器负载的指标。

一般情况下需要保证平均负载的值小于当前服务器的 CPU 核数
在这里插入图片描述
在这里我们主要关注 Load average 指标,上图有 3 个数字,分别代表 1 分钟, 5 分钟,15 分钟的平均负载

一般情况下服务器的平均负载需要小于当前服务器的 CPU 核数

为了应对突发状况,服务器的平均负载应该在 75%即 3 以下,很显然,上图这台服务器平均负载超过了 75%,需要考虑提升性能了

网络使用情况

当带宽不足时会 大大增加请求的响应时间

为了防止突发性并发压力,应该保证服务器的带宽使用率在 80%以上。这里需要注意的是,物理网卡限制了服务器所能使用的最大宽带

yum install nload -y

nload
在这里插入图片描述

如果 “当前网速” 持续接近 “最大网速” 时,代表 带宽使用率已经接近 100%

指标说明:

  • Curr:当前网速
  • Avg:平均网速
  • Min:最小网速
  • Max:最大网速
  • Ttl:总流量

服务器内核参数调优

光有强大的物理性能是不够的,还需要对内核参数进行调优,这样才能在高并发压力下充分体现服务器应有的性能

当然,并不是所有的服务器都需要做高并发性能调优

一般来说,只需要对要处理高并发请求的服务器进行内核参数调优即可,常见的包括:前端服务器,后端服务器,数据库服务器。服务器常见的调优参数主要有两个:单个进程最大打开文件数TCP 相关设置

单个进程最大打开文件数

修改单个 进程 最大打开文件数
只需要编辑/etc/security/limits.conf 文件,在文件末尾加上以下四句

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

其中* 代表所有用户,65536 代表修改的值,重启后生效。

TCP 相关设置

修改 TCP 相关参数,可以优化 TCP 高并发通信,编辑 /etc/sysctl.conf 文件,添加以下内容

# 为防止洪水攻击,高并发系统需要将此项  关闭!!!
net.ipv4.tcp_syncookies = 0
# 开启 TCP 连接重用,允许处理 TIME-WAIT 状态的连接重新用于新的 TCP 连接
net.ipv4.tcp_tw_reuse = 1
# 开启快速回收 TCP 连接中处于 TIME-WAIT 状态的连接
net.ipv4.tcp_tw_recycle = 1
# 修改超时时间( s ),该值表示如果连接由本端关闭,则连接处于 FIN-WAIT-2 状态的时间为
net.ipv4.tcp_fin_timeout = 30
# 当 keepalive(长连接)启用的时候,TCP 发送 keepalive 消息(探测包)的时间间隔( s ),默认为 2 个小时
net.ipv4.tcp_keepalive_time =1200
# 服务器对外连接的端口范围,影响该服务器与其他服务器的连接数
net.ipv4.ip_local_port_range =102465535
# SYN 队列的长度,可以容纳更多等待连接的网络连接数,默认为 1024
net.ipv4.tcp_max_syn_backlog = 65535
# 保持 TIME_WAIT 状态连接的最大数量,如果超过此值,TIME_WAIT 将立刻被清除并打印警告信息,默认为 180000
net.ipv4.tcp_max_tw_buckets =5000
# 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog =65535
# TCP 最大连接数
net.core.somaxconn = 65535
# 预留用于接收缓冲的内存默认值(字节)
net.core.rmem_default = 8388608
# 预留用于接收缓冲的内存最大值(字节)
net.core.rmem_max = 16777216
# 预留用于发送缓冲的内存默认值(字节)
net.core.wmem_default = 8388608
# 预留用于发送缓冲的内存最大值(字节)
net.core.wmem_maX = 16777216
# 避免时间戳异常
net.ipv4.tcp_timestamps = 0
# 系统中最多有多少个 TCP 套接字不被关联到任何一个用户文件句柄上,如果超过这个数字,连接将即刻被复位并打印警告信息
# 这个限制仅仅是为了防止简单的 DoS 攻击
net.ipv4.tcp_max_orphans =3276800
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL服务器优化需要从以下几个方面入手: 1. 硬件优化:包括CPU、内存、磁盘等硬件设备的优化,例如增加内存、使用SSD硬盘等。 2. 数据库设计优化:包括表结构设计、索引设计、查询语句优化等。 3. MySQL参数优化:包括MySQL的配置参数优化,例如缓存大小、连接数、线程池等。 4. 查询优化:包括查询语句的优化、使用索引等。 5. 高可用性和负载均衡:包括使用主从复制、读写分离、负载均衡等技术来提高MySQL的可用性和性能。 下面是一些MySQL服务器优化的具体方法和策略: 1. 硬件优化: - 增加内存:MySQL的性能和可用性与内存有很大关系,因此增加内存可以提高MySQL的性能和可用性。 - 使用SSD硬盘:SSD硬盘的读写速度比传统机械硬盘快很多,可以提高MySQL的性能。 2. 数据库设计优化: - 表结构设计:合理的表结构设计可以提高MySQL的性能,例如避免使用过多的关联表、避免使用过多的字段等。 - 索引设计:合理的索引设计可以提高MySQL的查询性能,例如使用联合索引、避免使用过多的索引等。 - 查询语句优化:避免使用SELECT *等不必要的查询语句,使用JOIN语句时尽量使用INNER JOIN等性能更好的语句。 3. MySQL参数优化: - 缓存大小:根据实际情况调整缓存大小,例如innodb_buffer_pool_size、query_cache_size等。 - 连接数:根据实际情况调整连接数,例如max_connections等。 - 线程池:使用线程池可以提高MySQL的性能和可用性,例如使用线程池插件等。 4. 查询优化: - 查询语句优化:避免使用SELECT *等不必要的查询语句,使用JOIN语句时尽量使用INNER JOIN等性能更好的语句。 - 使用索引:合理使用索引可以提高MySQL的查询性能,例如使用联合索引、避免使用过多的索引等。 5. 高可用性和负载均衡: - 主从复制:使用主从复制可以提高MySQL的可用性,例如使用MySQL Replication等。 - 读写分离:使用读写分离可以提高MySQL的性能,例如使用MySQL Proxy等。 - 负载均衡:使用负载均衡可以提高MySQL的性能和可用性,例如使用HAProxy等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值