Linux 服务简单优化

news2024/11/16 7:52:19

硬件优化

  • 处理器:核心数、主频、制程工艺、线程数、缓存等

核心数:1、2、4、6、8、12、24、32等
主频:2.0GHz、2.3GHz等等
制程工艺:22nm、14nm、10nm等等
线程数:1、2
缓存:L1、L2、L3
建议:尽量选择核心数越多、主频越高、制程工艺更新、支持超线程、缓存容量越大,且上市已过半年左右的
处理器。

  • 内存:容量、频率、代数

容量:1G、2G、4G、8G、16G、32G
频率:1600、1866、2133、2400MHz等
代数:1、2、3、4代
建议:尽量选择单条容量16G或32G的DDR4 2133MHz及以上频率的内存条。

  • 硬盘:类型、转速、接口类型、RAID

类型:机械和SSD固态
转速:5400、7200、10000、15000 转/分(机械硬盘)
接口类型:SATA、SAS、PCI-E
RAID:0、1、5、6、10、50、60
建议:尽量选择支持PCI-E的SSD固态硬盘,尤其数据库、搜索引擎。

  • 网卡:速率、接口类型

速率:10Mbps、100Mbps、1Gbps、4Gbps、10Gbps
接口类型:以太网、光纤等
建议:大部分服务器默认提供的1Gbps以太网卡够用。
如有需大数据量高并发访问的服务器遇到网络流量高峰跑满的情况,可以改用支持4Gbps或10Gbps的光纤接口网卡。

其他建议:
一般服务器集成显卡即可,除非有大量视频图像处理或异构计算等特殊需求。

操作系统优化

  • 系统服务:关闭不用服务,提高性能同时,提高安全。
grep -q '7.' /etc/redhat-release
if [ $? -ne 0 ]; then
    Services=$(chkconfig --list | grep '0' | awk '{print $1}' | grep -Ev 'sshd|network|crond|syslog|ntpd')
    for Service in $Services
    do
        service $Service stop
        chkconfig --level 0123456 $Service off
    done
else
    Services=(atd avahi-daemon cups dmraid-activation firewalld irqbalance kdump mdmonitor postfix)
    for Service in ${Services[*]}
    do
        systemctl disable ${Service}
        systemctl stop ${Service}
    done
    systemctl enable rc-local
fi
  • 内核参数:
cat >> /etc/sysctl.conf << EOF
vm.swappiness = 0
vm.overcommit_memory = 1
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
net.core.somaxconn = 60000
net.core.netdev_max_backlog = 60000
net.ipv4.tcp_max_orphans = 60000
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_max_syn_backlog = 60000
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.ip_local_port_range = 1024 65500
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_mem = 786432 1048576 1572864
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.sem = 250 32000 100 10000
kernel.pid_max = 65536
fs.inotify.max_user_watches = 1048576
kernel.kptr_restrict = 1
kernel.ctrl-alt-del = 1
EOF
sysctl -p
  • 提高系统打开文件数、打开进程数限制,减小默认栈空间大小限制:
cat >> /etc/security/limits.conf << EOF
* - nofile 1048576
* - nproc  65536
* - stack  1024
EOF
  • 提高Shell打开文件数、打开进程数限制,减小默认栈空间大小限制:
cat >> /etc/profile << EOF
ulimit -n 1048576
ulimit -u 65536
ulimit -s 1024
EOF

服务优化

  • 配置:
  1. 尽量开启缓存、缓冲,如:Nginx的fastcgi_cache、open_file_cache,PHP的opcache,MySQL的innodb buffer等等。
  2. 解锁资源限制,如:提高打开文件数、增加服务工作进程数、CPU绑定等等。
  3. 减小磁盘和网络IO,如:使用批量读写数据,tmpfs文件系统代替磁盘,关闭日志,开启http服务的keepalive属性、gzip压缩等等。
  • 代码:
  1. 直接修改应用服务自身源代码或者使用第三方应用,如:Tengine代替Nginx、MairaDB代替MySQL。
  2. 借助性能分析调试工具,如:xdebug、xhprof分析业务PHP代码,慢日志和explain工具分析SQL语句等等。
  • 编译:
  1. 添加优化参数,如:gcc编译优化级别-O参数。
  2. 去除多余模块,如:Nginx几乎很少用到的pop3模块。
  3. 借助其它加速模块或补丁,如:谷歌出品的内存分配库tcmalloc,阿里巴巴出品的合并静态文件Nginx补丁Concat。

架构优化

  • 域名解析负载均衡:通过单个域名解析成多个IP地址,将用户的请求分发到不同的机房。
    优点:简单,维护比较方便,适合网站镜像。
    缺点:请求分布不均匀,域名解析缓存影响高可用。

  • 动静分离:将图片、视频、js、css等静态文件单独抽离,减小动态请求和静态请求服务器之间互相影响。
    优点:服务器功能更加简单,排查问题更加容易。
    缺点:开发前期人力物力成本较高。

  • CDN:将静态资源部署到离用户更近的网络,减小用户请求的网络传输时间。
    优点:大大提高用户访问静态资源的速度。
    缺点:涉及到国内的复杂环境,管理维护成本较高。

  • 负载均衡:分发请求至后端服务器。
    优点:大大提高了后端服务器集群的性能和扩展性。
    缺点:硬件负载均衡太贵。

  • 分布式内容缓存:将数据库不经常修改的数据保存至内容缓存服务器。
    优点:可以很大程度上减小数据库的读压力。
    缺点:需解决数据缓存失效和数据库更新的数据一致性问题,包含令人头疼的雪崩效应。

  • 消息队列:不仅可以做消息服务器,还可以将大量的消耗资源操作转换成顺序异步操作。
    优点:减小瞬间高并发请求和服务器及数据库负载。
    缺点:消息队列的高可用实现比较复杂,维护难度较高。

  • 数据库代理:按照设定规则将不同的SQL发送至不同的数据库,然后聚合数据返回。
    优点:减少了业务代码层读写数据库的逻辑复杂度,提高了数据库集群的扩展性。
    缺点:数据库代理软件需重新实现对SQL语句的解析,同时还需支持分库分表,从而影响性能和维护。

总结

网站性能经常出在数据库瓶颈。
数据库耗CPU、耗内存、耗IO,优化架构常用的最简单办法就是尽量减小数据库的读写操作。
大部分公司的做法都是将请求尽量截留在数据库之前的服务器响应,越靠前越好。
可以将一部分动态内容转换成静态内容,进一步减小动态语言服务器和数据库读压力。
还可以将一部分读写数据库请求转成消息队列实现批量操作。
通过分库分表分区和数据库代理扩展数据库集群的性能。
当然,SQL语句的优化工作需一直坚持。
其余的服务如遇到性能不足时可以直接通过前置LVS、Haproxy、Nginx+TCP模块等方法扩展集群规模。

缓存:
缓存

架构:
架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony 3.2 Release特性更新简析

1.ArkUI 组件能力增强 支持XComponent控件&#xff0c;可用于EGL/OpenGL ES和媒体数据写入&#xff0c;并在XComponent组件显示&#xff1b;通过XComponent组件&#xff0c;配合NDK能力&#xff0c;构建C/ArkTS混合开发能力&#xff0c;支持游戏、媒体应用开发支持AbilityCom…

前端学习:HTML内联框架

目录 一、HTML Iframe 二、添加iframe的语法 三、Iframe设置高度和宽度 ​编辑 四、Iframe删除边框 五、使用iframe作为链接的目标 六、补充 一、HTML Iframe iframe用于在网页内显示网页。 二、添加iframe的语法 <iframe src"URL"></iframe> 提示…

“计数”排序

目录 一、什么是计数排序&#xff1f;二、如何实现计数排序&#xff1f;三、适用场景四、时间复杂度和空间复杂度 一、什么是计数排序&#xff1f; 计数排序&#xff0c;是通过统计每一个数字出现的次数&#xff0c;并把它映射到与它自己本身数值相同的下标处&#xff0c;再遍…

HoloLens2场景理解,识别平面信息

因为可用的资料比较少,就记录下吧,大家也可以少走弯路,节省时间。 场景理解,通俗的讲,可以识别空间当中的墙面、地板、天花板、平台等. 场景理解&#xff08;Scene Understanding&#xff09;是指 HoloLens2 通过深度传感器、摄像头和计算机视觉算法等技术&#xff0c;能够对…

Centos安装Nvidia驱动解决内核版本不匹配问题

Centos安装Nvidia驱动解决内核版本不匹配问题 问题分析尝试解决 写程序三分钟&#xff0c;配环境三小时&#xff0c;尤其是在一台全新机器/重装系统后。。。 已经解决的&#xff1a; 禁用nouveau驱动并重启电脑&#xff08;参考这篇博客&#xff09;缺少cc&#xff0c;手动yum…

C++---状态压缩dp---炮兵阵地(每日一道算法2023.4.17)

注意事项&#xff1a; 本题为"状态压缩dp—蒙德里安的梦想"和"状态压缩dp—小国王"和"状态压缩dp—玉米田"的近似题&#xff0c;建议先阅读这三篇文章并理解。 题目&#xff1a; 司令部的将军们打算在 NM 的网格地图上部署他们的炮兵部队。 一个…

Pytorch中的仿射变换(F.affine_grid)

目录 1、平移操作实现 2、缩放操作 3、旋转操作 4、转置操作 在pytorch框架中&#xff0c; F.affine_grid 与 F.grid_sample&#xff08;torch.nn.functional as F&#xff09;联合使用来对图像进行变形。 F.affine_grid 根据形变参数产生sampling grid&#xff0c;F.grid_…

深入浅出openGauss的执行器基础

目录 火山模型 Tuple 数据结构设计 条件计算 Expr 和 Var 示例1 filter 示例2 join 示例3 index scan & index only scan 火山模型 执行器各个算子解耦合的基础。对于每个算子来说&#xff0c;只有三步&#xff1a; 1、向自己的孩子拿一个 tuple。即调用孩子节点…

C++初阶之缺省参数

目录 前言 缺省参数 1.缺省参数的概念 2.缺省参数的分类 全缺省参数 半缺省参数 前言 今天小编继续给大家带来C的内容&#xff0c;那么今天小编给大家讲解的就是有关C中缺省参数的介绍。 缺省参数 1.缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省…

分布式互联网——Web3.0

文章目录 前言一、什么是 Web3.0?二、Web3.0 技术1.分布式账本技术(DLT)2. 区块链3. 智能合约4. 加密算法2.操作 三、Web3.0 的未来发展 前言 Web3.0&#xff0c;也被称为“分布式互联网”&#xff0c;是当前互联网的下一代版本。它是一种未来的互联网&#xff0c;它没有中心…

ROS学习第十一节——常用命令

1.概述 机器人系统中启动的节点少则几个&#xff0c;多则十几个、几十个&#xff0c;不同的节点名称各异&#xff0c;通信时使用话题、服务、消息、参数等等都各不相同&#xff0c;一个显而易见的问题是: 当需要自定义节点和其他某个已经存在的节点通信时&#xff0c;如何获取…

实践分享:如何在自己的App 中引入AI 画图

最近AIGC 简直是杀疯了&#xff0c;领导动不动就让我们在APP 里引入大语言模型&#xff0c;引入AI画图……说搞就搞&#xff01;本期基于最近在app 里引入AI画图小程序的操作&#xff0c;给大家做一波实践分享。 Scribble Diffusion 是一个简单的在线服务&#xff0c;它使用 A…

定制自己的文档问答机器人

近期ChatGPT很火爆&#xff0c;功能很强大&#xff0c;其具有强大的逻辑推理能力和数据背景。但是如果我们想要使用ChatGPT聊一些它没有训练过的知识&#xff0c;或者我们自己的一些数据时&#xff0c;由于ChatGPT没有学习过这些知识&#xff0c;所以回答结果不准确。 下文就介…

十、切分织物起球和非起球区域以便于计算毛球对比度

一、通过训练的模型可以将织物的起球区域进行识别区分 原图&#xff1a; 模型识别&#xff1a; 二、对比度的计算 为了对织物起球等级进行评定&#xff0c;需要这边不同的参数特征来构建模型的评级系统 通过查阅相关文献&#xff0c;确定最终的特征参数为&#xff1a;织物起…

11.面向对象概述,类的创建,对象的创建

一.面向对象程序设计概述 1.知识点面向对象程序设计的目的 &#xff08;1&#xff09;从程序设计的角度来看&#xff0c;事物的属性就可以用变量来表示&#xff0c;行为则可以用方法来反映。 &#xff08;2&#xff09;客观世界中事物的属性和行为可以进行传递&#xff0c;当…

汇编与内联 x86-64

机器字长 x86是32位系统 64是64位系统 这里的32和64&#xff0c;指的都是机器字长 机器字长是 能直接进行整数/位运算的大小指针的大小(索引内存的范围) 8位机 由于空间大小限制&#xff0c;想要把集成电路做到个人主机里&#xff0c;只能用8位字长的 16位机 8086 IBMP…

如何破除增长的未知性?火山引擎交出了答卷

4月18日&#xff0c;由火山引擎主办的2023春季火山引擎“FORCE原动力”大会在上海召开。本次大会主要围绕云计算和数字化领域&#xff0c;全方位地展示火山引擎在云技术、云服务和云场景方面的最新探索、应用与实践&#xff0c;呈现创新发展的战略蓝图。 曾经&#xff0c;增长是…

Flink高手之路5-Table API SQL

文章目录 Flink 中的Table API & SQL一、Table API & SQL 介绍1. 为什么要Table API和SQL2. Table API & SQL的特点3. Table API& SQL发展历程3.1 架构升级3.2 查询处理器的选择3.3 了解-Blink planner和Flink Planner具体区别如下&#xff1a;3.4 了解-Blink …

神采PromeAI 2.0版本上线,助你释放创作超能力

上个月&#xff0c;我们推出神采PromeAI 1.0版本&#xff0c;让用户可以免费体验AI草图渲染功能。神采作为设计师的提效工具和灵感源泉&#xff0c;深受用户的广大好评。于是&#xff0c;在经过算法优化后&#xff0c;神采PromeAI 2.0版本终于在本周上线了&#xff01; 我们提供…

【Vulnhub】之Symfonos2

一、 部署方法 在官网上下载靶机ova环境&#xff1a;https://download.vulnhub.com/symfonos/symfonos2.7z使用VMware搭建靶机环境攻击机使用VMware上搭建的kali靶机和攻击机之间使用NAT模式&#xff0c;保证靶机和攻击机放置于同一网段中。 二、 靶机下载安装 靶机下载与安…