性能优化中的服务器与操作系统优化

我们常说:让专业的人做专业的事情,对于服务器来说也有其擅长的方面。例如,运行,AI算法时,我们会选择使用具有CPU的机器,数据库服务器我们会选择磁盘效率高,CPU强劲,内存较大的服务器。

所以服务要与业务匹配,要有侧重点。

即使你选对了服务器,能不能发挥好服务器的性能也是一个问题。服务器硬件资源的调动是由操作系统来控制的,操作系统为了满足复杂的资源调度需求,也会有很多可选,可配的操作。

例如,我们在使用kubernetes时,会要求关闭swap内存。由于kubernetes会管理很多pod,打开的文件句柄自然会很多,调整可打开的文件数很有必要;反之,服务器的硬件资源的利用率可能很低。为了提高pod间服务的互访效率,我们理所当然地会想到在同一主机上的pod的互动是否可以在内核中完成通信,所以就有了ipvs的方案。

因此,服务器被不同的服务使用时,配置有侧重,操作系统的配置也有侧重。在进行性能压测时,我们定位到了限制,就去修改相应的配置,直到硬件资源利用率达到极致。通常我们要关注的优化包含以下几个方面。

1> 内核能够开启的任务数(kernel.pid_max),针对性能强劲的服务器,例如64核256GB内存。

2>系统级别的能够打开的文件句柄数量(fs.file-max),针对性能强劲的服务器。

3>用户级别的能够打开的文件句柄的数量(soft nofile /hard nofile).

4>进程可以拥有的VMA(虚拟内存区域)的数量(max_map_count),例如使用JVM运行JAVA应用,要支持大量连接,这个值就可以适当扩大。

例如ElasticSearch的使用中就有一个需要注意的地方,报错类似max virtual memory areas vm.max_map_count [65530] is too low ,increase to at least [232144]

5>Tcp 优化,例如:

复制代码
#减保持在Fin-wait-2状态的时间,对于短连接多的服务器可以考虑设置net.ipv4.tcp_fin_timeout=30#重用TIME_WAIT资源net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_tw_recycle=1

6>是否关闭了Swap,例如在使用kubernetes时就建议关闭Swap。

7>是否设置CPU的"亲和性"

性能优化是确保服务器和操作系统能够高效运行的关键步骤。这包括从硬件层面到软件层面的多个方面,旨在提高系统的响应速度、吞吐量以及资源利用率。

以下是关于服务器与操作系统优化的一些核心策略:

服务器硬件优化

CPU优化:选择适合应用负载的处理器类型,并考虑使用多核或多路处理器来处理并发请求。对于需要大量计算的应用,可以考虑采用更高效的CPU架构。

内存管理:增加物理内存容量以减少对交换空间(swap)的依赖,同时优化内存分配算法。使用内存数据库或缓存技术(如Redis或Memcached)来加速数据访问。

存储系统:升级到更快的存储设备,比如固态硬盘(SSD),并调整文件系统的参数以匹配特定的工作负载需求。

网络优化:改进网络配置,例如调整TCP/IP参数,使用高速网络接口卡(NICs),以及实现负载均衡和冗余连接。

操作系统优化

内核参数调优:根据应用的需求调整操作系统的内核参数,如调整电梯算法以优化磁盘I/O性能,或者修改TCP缓冲区大小以适应高带宽环境下的长距离传输。

服务管理:关闭不必要的服务和守护进程,释放宝贵的系统资源。例如,在Linux中禁用不需要的守护进程可以显著降低CPU和内存的占用。

进程与线程管理:优化进程调度算法,减少进程间的竞争,提高系统的并发能力。合理设置线程池大小,避免创建过多线程导致上下文切换开销过大。

文件系统优化:选择合适的文件系统,并进行适当的挂载选项配置,如使用noatime选项减少文件访问时的时间戳更新次数,从而提高性能。

安全性和稳定性:通过合理的权限设置和安全策略增强系统的安全性;定期更新操作系统和应用程序的安全补丁,防止潜在的安全威胁。

日志管理:适当配置日志级别,避免产生过多的日志信息占据磁盘空间或影响系统性能。

监控与分析

实施有效的监控机制,利用工具如vmstat, top, iostat, 和 netstat等监控系统资源的使用情况。

分析系统瓶颈,识别出限制系统性能的关键因素,并采取针对性措施加以解决。

在进行服务器与操作系统优化时,重要的是要基于实际的工作负载来进行定制化配置。没有一种通用的解决方案适用于所有场景,因此需要持续地评估和调整优化策略。此外,随着技术和业务需求的变化,优化工作也是一个不断迭代的过程。通过综合运用上述提到的各种方法和技术,可以有效地提升服务器和操作系统的性能,满足日益增长的服务需求。

阅读后若有收获,不吝关注,分享,在看等操作!!!

相关推荐
秃头菜狗18 分钟前
各个主要目录的功能 / Linux 常见指令
linux·运维·服务器
利刃大大19 分钟前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
vfvfb1 小时前
bat批量去掉本文件夹中的文件扩展名
服务器·windows·批处理·删除扩展名·bat技巧
玩转4G物联网2 小时前
零基础玩转物联网-串口转以太网模块如何快速实现与TCP服务器通信
服务器·网络·物联网·网络协议·tcp/ip·http·fs100p
派阿喵搞电子2 小时前
Ubuntu下有关UDP网络通信的指令
linux·服务器·网络
程序员JerrySUN3 小时前
全面理解 Linux 内核性能问题:分类、实战与调优策略
java·linux·运维·服务器·单片机
Theodore_10223 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构
huangyuchi.3 小时前
【Linux】LInux下第一个程序:进度条
linux·运维·服务器·笔记·进度条·c/c++
蔡蓝3 小时前
设计模式-建造者模式
服务器·设计模式·建造者模式
搬码临时工3 小时前
外网访问内网服务器常用的三种简单操作步骤方法,本地搭建网址轻松让公网连接
服务器·网络·智能路由器