当前位置: 首页 > article >正文

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

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

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

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

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


http://www.kler.cn/a/543949.html

相关文章:

  • 腾讯大数据基于 StarRocks 的向量检索探索
  • Qwen2.5-Max:国内新一代 MoE 大模型的崛起!
  • 四、自然语言处理_08Transformer翻译任务案例
  • 基础设施在平台工程中的作用
  • 通过客户端Chatbox或OpenwebUI访问识别不到本地ollama中的模型等问题的解决
  • PDF Shaper:免费多功能 PDF 工具箱,一站式满足您的 PDF 需求!
  • 华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)
  • 在亚马逊云科技上一键自动部署Falcon3大语言模型
  • 11.推荐系统的安全与隐私保护
  • 对gru的理解
  • 【C++八股】C++内存管理
  • 从360度全景照片到高质量3D场景:介绍SC-Omnigs 3D重建系统
  • redis持久化原理相关面试题剖析
  • 期权帮 | 股指期货交易:规则速览与解读!
  • SpringBoot速成(九)获取用户信息 P9-P10
  • git - 克隆带子模块的git工程的方法
  • windows蓝牙驱动开发-支持蓝牙事件通知
  • 为什么 ARCGIS PRO ArcGISIndexingServer.exe 使用大量计算机内存?
  • UGUI下UI元素的position和localPosition
  • 计算机网络和操作系统常见面试题目(带脑图,做了延伸以防面试官深入提问)
  • docker nginx 配置文件详解
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 10
  • MFC程序设计(十一)单文档架构
  • 从时间同步到智能调度:TSN时间敏感网络如何提升工厂安全性
  • 【Elasticsearch】Kibana Dev Tools中基础使用
  • AI前端开发:革新工作环境与团队协作