Linux 服务简单优化

news/2024/5/19 19:46:49/

硬件优化

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

核心数: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 ]; thenServices=$(chkconfig --list | grep '0' | awk '{print $1}' | grep -Ev 'sshd|network|crond|syslog|ntpd')for Service in $Servicesdoservice $Service stopchkconfig --level 0123456 $Service offdone
elseServices=(atd avahi-daemon cups dmraid-activation firewalld irqbalance kdump mdmonitor postfix)for Service in ${Services[*]}dosystemctl disable ${Service}systemctl stop ${Service}donesystemctl 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.ppmy.cn/news/47292.html

相关文章

Linux用户的分类与家目录,ls、pwd、cd、mkdir、touch、rmdir、rm指令与选项等

Linux中用户的分类与用户的家目录 在Linux当中&#xff0c;用户的分类只分为两类&#xff0c;一类叫做超级用户root&#xff0c;还有就是其他也就是传说中的普通用户。我们刚刚登进去时&#xff0c;默认所处的目录是***/root或者/home/用户名***&#xff0c;比如说/root, /hom…

知识库管理系统对于企业有哪些作用及优势?

知识库管理系统是一种通过集成多种技术手段&#xff0c;将企业内部知识进行收集、整理、存储、分析和共享的信息管理系统。知识库管理系统可以帮助企业管理和利用企业内部的知识&#xff0c;提高企业的创新能力和竞争力。 知识库管理系统的作用 1、促进企业内部知识的流通和共…

无线传感器网络硬件设计简介

无线传感器网络硬件设计简介 无线传感器网络因其巨大的应用前景越来越受到学术界和工业界的广泛关注。本文介绍了无线传感器网络节点的体系结构&#xff0c;分析比较了国内外当前典型的硬件平台&#xff0c;重点讨论了目前无线传感器网络节点常用的处理器、射频芯片、电源和传…

Java IO流

Java IO流 IO就是Intput和Output也就是输入输出&#xff0c;将数据输入到计算机内存的过程叫做输入&#xff0c;从内存读取出来的数据叫做输出。Java的IO流总共有40多个类&#xff0c;他们都是由下个4个抽象类派生出来的&#xff0c;InputStream和Read和OutputStream和Writer。…

网络拥塞控制,对越远的流量越宽容

考虑下面的网络传输场景&#xff1a; ​ S1&#xff0c;S2&#xff0c;S3&#xff0c;S4 向 D 方向发送&#xff0c;R4 发生拥塞。R4 必须丢弃一些数据进行疏导反馈拥塞信号&#xff0c;否则谁也过不去。 优先丢掉离得最近的 S4 的数据&#xff0c;其次依次丢 S3&#xff0c;S2…

ChatGPT会如何改变制造业?

来源 | Smart Industry Edgenesis编译 ChatGPT最新版本的发布成为热门头条。OpenAI表示该版本的ChatGPT能够在多个专业测试中达到“人类水平”的表现&#xff0c;例如司法考试和SAT考试。不过&#xff0c;在工业领域中&#xff0c;ChatGPT能够发挥怎样的作用呢&#xff1f;Sma…

计算广告(十七)

多渠道组合路径效率评价 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 分析背景&#xff1a; 电商归因分析通常以 last_click 为基准&#xff0c;将成交转化归功于用户完成转化前的最近一个广告系列。然而&#xff0c;在此之前&a…

HTTP的那些事儿

超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff0c;HTTP&#xff09;&#xff0c;它是在计算机世界中的两个点之间传递文本&#xff0c;图片&#xff0c;多媒体等超文本文件的协议。HTTP处在数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;应用…

java 资料地址汇总

1 SpringBoot - 使用 Assert 校验让业务代码更简洁 SpringBoot - 使用 Assert 校验让业务代码更简洁 2 MyBatis-Plus 还手写 Join 联表查询&#xff1f;一个依赖轻松搞定&#xff0c;真香&#xff01; MyBatis-Plus 还手写 Join 联表查询&#xff1f;一个依赖轻松搞定&#…

中小企业面临怎样的数字化转型局面

当前&#xff0c;我国经济长期向好的基本面没有改变&#xff0c;但承受着“需求收缩、供给冲击、预期减弱”的三重压力&#xff0c;中小企业的数字化转型之路较之以往更加艰难、曲折。为帮助中小企业纾困解难、平稳渡过危机&#xff0c;需进一步优化政策“组合拳”&#xff0c;…

CMake

CMake定义 CMake是一个跨平台的安装&#xff08;编译&#xff09;工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件&#xff0c;能测试编译器所支持的C特性,类似UNIX下的automake。只是 CMake 的组态档取名为 C…

背包问题——01背包|完全背包

目录 前言&背包问题的历史 01背包 1、题目 2、暴力解01背包 Ⅰ、代码 3、动态规划解01背包 Ⅰ、二维dp数组解01背包 1&#xff09;dp数组的含义 2&#xff09;递推公式 3&#xff09;dp数组的初始化 4&#xff09;遍历顺序的讨论 5、代码 Ⅱ、一维数组解01背包 1&…

[API]集合Collection常用方法集合遍历新循环泛型(三)

什么是集合&#xff1a; 集合和数组一样&#xff0c;可以保存一组数据&#xff0c;并且提供了操作数组元素的相关方法&#xff0c;使用用更加方便 集合框架中的相关接口&#xff1a; java.util.Collection接口&#xff1a;是所有集合的顶级接口&#xff0c;封装了所有集合所…

【理解 C++ 中的头文件和源文件的作用 】

include文件中定义 src文件中声明 头文件中应该只放变量和函数的声明&#xff0c;而不能放它们的定义。 在 C 中&#xff0c;头文件和源文件有着不同的作用。它们共同组成了 C 项目的基本结构。让我们逐个了解它们的作用。 头文件&#xff08;.h 或 .hpp 文件&#xff09;&a…

【从零开始学Skynet】实战篇《球球大作战》(十四):agent跨服务器版

至此&#xff0c;我们已完成了《球球大作战》的绝大部分功能&#xff0c;只剩下完 善agent &#xff0c;让它和 scene 服务联动了。 1、多个模块 一般而言&#xff0c;代理服务会承载很多系统&#xff0c;比如邮件、成就等&#xff0c;此处涉及的代码较多&#xff0c;容易混 乱…

初中级测试工程师,软件测试面试题总结大全(功能/接口/自动化测试)你要的都有...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 一般软件测试的面…

程序员只能吃青春饭?3条晋升之路帮你摆脱程序员中年魔咒!

作为一个程序员 尤其是在这些中 不管是中国 还是美国的这些大的公司里边呢 往往呢 有大概两条这样的一个境界之路 根据你自己个人的这种能力兴趣 其实你可以进行自己的选择 科技大佬们其实往往呢也都是从 这个比较年轻的时候对吧 归国创业也好 还是自己出自于草根 然后一下子凝…

【Python_Scrapy学习笔记(十三)】基于Scrapy框架的图片管道实现图片抓取

基于Scrapy框架的图片管道实现图片抓取 前言 本文中介绍 如何基于 Scrapy 框架的图片管道实现图片抓取&#xff0c;并以抓取 360 图片为例进行展示。 正文 1、Scrapy框架抓取图片原理 利用 Scrapy 框架提供的图片管道类 ImagesPipeline 抓取页面图片&#xff0c;在使用时需…

今天面了个字阿里拿38K出来的,真是纹身师闭眼,秀了我一脸啊

公司前段缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在15-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不提测…

【已解决】Field ‘id‘ doesn‘t have a default value 错误的解决办法

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…