外链论坛

 找回密码
 立即注册
搜索
查看: 37|回复: 2

聊聊服务器优化~(意见保藏)

[复制链接]

3063

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158953
发表于 2024-9-1 10:25:26 | 显示全部楼层 |阅读模式

咱们研发的软件服务需要在服务器上运行,因此服务器性能表率了软件的性能上限,因此呢服务器性能调优是个非常重要的环节,然而大部分朋友对服务器性能调优关注的较少,今天从3个部分对服务器性能调优进行介绍,分别是:服务器配置选取,服务器负载分析,服务器内核参数调优。

服务器配置选取

服务器通常是由于CPU、内存、磁盘和网卡构成因此呢选取服务器配置便是选取CPU核数、内存体积、磁盘体积及类型、网络带宽。然则,服务器配置的选取是很难标准化的,便是说很难推断出“一台需要达到1000TPS的后端服务器”的配置应该是什么样的。由于软件的最后运行性能与软件的实现方式是紧密关联的,即使是同一个后端应用程序中的两个接口,因为详细功能的差别,性能会有所差别。

因此呢,服务器配置的选取应该基于详细的测试结果。一起始能够选择配置较低的服务器做调优和测试,并以该服务器的测试结果做为选取服务器的依据。

以一个订单业务为例,经过测试后,一台配置为4核 CPU 、16GB内存、10Mbps带宽、50GB机械磁盘的服务器的测试结果为:支持50并发量和300TPS吞吐量(增大并发量后会显现超时报错)。而在压力测试过程中, CPU 的运用率接近75%,内存运用率在 50%以下,带宽运用率在50%以下,除去日志以外无磁盘操作。

因此呢能够认为,一台配置为4核 CPU ( CPU 运用率需要在75%以下)、8GB内存(内存运用能够接近100%)、 5Mbps 带宽(带宽运用能够接近100%)的服务器,能够满足订单接口支持50并发量、300TPS吞吐量的压力。

倘若需要达到200并发数、2400TPS吞吐量的目的的话,则需要8台配置为4核 CPU 、8GB内存、5Mbps带宽的服务器,1台配置为32核 CPU 、64GB内存、40Mbps带宽的服务器。当然,最后的服务器配置还是需要经过测试来验证。

重视:在以上订单接口的例子中,后端服务器和数据库等服务器需要一块调试,避免后端服务器性能过剩,而数据库等服务器性能不足的状况出现另一,以上选取服务器配置的办法必定适用于所有场景,请斟酌参考。

服务器负载分析

在性能调优时,需要先对服务器负载进行分析,一般而言,咱们重点分析CPU运用率、内存运用率、磁盘I/O,服务器负载和带宽运用状况

CPU运用

CPU运用率反应的是CPU的忙碌状况。当CPU达到100%时,部分进程会进入等待状态,CPU暂时不会对其进行处理。实质状况下,为了应对一下突发性的请求压力,服务器CPU运用通常需要在75%以下。倘若一台服务器的CPU运用率多次高于75%,此时候就思虑增多新的服务器。

监控CPU运用率我举荐大众运用htop工具,能够非常直观看到CPU运用率、内存运用率、及负载等信息。

运用htop查看CPU负载

首要咱们需要安装htop,以centos为例,安装命令如下:

yuminstall htop -y

安装完成后咱们能够经过htop命令观察CPU负载了

htop

输入htop命令后咱们能够很直观的看到CPU负载状况,该命令的CPU运用率会以多个核做为单位进行表示。操作系统机会自动分配多个核的负载,当所有核的CPU运用率都超过75%时才可认为服务器的CPU运用已然超过75%。

如上图所示,这是一个4核CPU服务器,在截图的时候其中3核CPU运用率都超过了75%,再观察一会发掘所有CPU的运用率都在85%上下徘徊,说明CPU负载很高了,需要思虑增多新的服务器。

内存运用

内存运用率反应的是内存的运用状况。内存用于存放程序的代码及数据,通常分为理学内存和虚拟内存,其中理学内存指的是服务器的内存,而虚拟内存指的是硬盘的一起空间。当理学内存运用率达到100%时将会运用虚拟内存。需要重视的是,虚拟内存的读写速度远远小于理学内存,倘若程序被放在了虚拟内存执行,那样程序的执行效率会变得很低。

通常而言,服务器的理学内存应该保持在80%以下,虚拟内存运用率保持在0%。

服务器内存运用状况还是能够经过hop工具进行查看

上面表示了服务器的内存运用状况:总内存16G,运用了10G上下,内存运用率62%,能够继续运用同期关闭了Swap虚拟内存。

在下MEM%栏中表示了单个进程的内存运用率。

磁盘I/O

磁盘I/O指的是磁盘的读写,在软件系统中,日志、文件操作、数据库操作都会导致磁盘读写压力,其中又以数据库操做为甚,在高并发状况常常数据库会首要作为系统的瓶颈。

磁盘监控我举荐大众运用iostat工具,能够很方便查看磁盘的运用状况

运用iostat查看磁盘I/O

首要咱们需要安装iostat,以centos为例,安装命令如下:

yum install sysstat -y

安装完成后咱们能够经过iostat命令磁盘使用状况了。

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

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

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

平均负载

平均负载指的是单位时间内平均的活跃进程数,是一个暗示服务器负载的指标。通常状况下需要保准平均负载的值少于当前服务器的CPU核数。

一样的,查看服务器平均负载咱们能够运用htop命令

这儿咱们重点关注Load average指标,上图有3个数字,分别表率1分钟,5分钟,15分钟的平均负载。

通常状况下服务器的平均负载需要少于当前服务器的CPU核数,为了应对突发情况,服务器的平均负载应该在75%即3 以下,很显然,上图这台服务器平均负载超过了75%,需要思虑提高性能了。

网络运用状况

网络运用状况是监控的重要指标。当带宽不足时会大大增多请求的响应时间。为了防止突发性并发压力,应该保准服务器的带宽运用率在80%以上。这儿需要重视的是,理学网卡限制了服务器所能运用的最大宽带。

查看网络运用状况举荐运用nload工具。

运用nload查看网络

首要需要安装nload,以centos为例

yum install nload -y

安装完成后咱们直接运行nload

nload

输入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

原文链接:

https://juejin.cn/post/7106103652435263496




上一篇:网络营销推广办法(最新版)抓紧保藏_将来20年可用!
下一篇:企业网站整体外包出去怎么做营销
回复

使用道具 举报

3037

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109078
发表于 2024-10-1 03:55:41 | 显示全部楼层
期待你更多的精彩评论,一起交流学习。
回复

使用道具 举报

2983

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109240
发表于 2024-10-27 15:24:53 | 显示全部楼层
你的话深深触动了我,仿佛说出了我心里的声音。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-18 08:28 , Processed in 0.121113 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.