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

我们常说:让专业的人做专业的事情,对于服务器来说也有其擅长的方面。例如,运行,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等监控系统资源的使用情况。

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

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

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

相关推荐
小馒头学python30 分钟前
体验 DeepSeek-R1:解密 1.5B、7B、8B 版本的强大性能与应用
服务器
久绊A36 分钟前
网络基础知识与配置
linux·服务器
前端早间课1 小时前
无法使用ip连接服务器的mysql
服务器·tcp/ip·mysql
Golinie1 小时前
【C++高并发服务器WebServer】-12:TCP详解及实现
服务器·c++·tcp·webserver
Leven1995272 小时前
Spark 性能优化 (二):内存模型
大数据·性能优化·spark
黑客老李2 小时前
一次使用十六进制溢出绕过 WAF实现XSS的经历
java·运维·服务器·前端·sql·学习·xss
爱北的琳儿2 小时前
CentOS7清理大文件(/dev/vda1几乎接近于满状态)
运维·服务器
圆️️2 小时前
12c及以后 ADG主备切换
服务器·网络·数据库
Feng.Lee2 小时前
性能优化中的系统架构优化
测试工具·性能优化·系统架构·可用性测试
一个高效工作的家伙2 小时前
安装mariadb+galera搭建数据库集群
运维·服务器·数据库