博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux服务简单优化
阅读量:7199 次
发布时间:2019-06-29

本文共 3699 字,大约阅读时间需要 12 分钟。

硬件优化

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

    核心数: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-releaseif [ $? -ne 0 ]; thenServices=$(chkconfig --list | grep '0' | awk '{print $1}' | grep -Ev 'sshd|network|crond|syslog|ntpd')for Service in $Servicesdo    service $Service stop    chkconfig --level 0123456 $Service offdoneelseServices=(atd avahi-daemon cups dmraid-activation firewalld irqbalance kdump mdmonitor postfix)for Service in ${Services[*]}do    systemctl disable ${Service}    systemctl stop ${Service}donesystemctl enable rc-localfi
  • 内核参数:

    cat >> /etc/sysctl.conf << EOFvm.swappiness = 0vm.overcommit_memory = 1net.core.rmem_default = 262144net.core.rmem_max = 16777216net.core.wmem_default = 262144net.core.wmem_max = 16777216net.core.somaxconn = 60000net.core.netdev_max_backlog = 60000net.ipv4.tcp_max_orphans = 60000net.ipv4.tcp_orphan_retries = 3net.ipv4.tcp_max_syn_backlog = 60000net.ipv4.tcp_max_tw_buckets = 10000net.ipv4.ip_local_port_range = 1024 65500net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_synack_retries = 1net.ipv4.tcp_syn_retries = 1net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1200net.ipv4.tcp_mem = 786432 1048576 1572864fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.sem = 250 32000 100 10000kernel.pid_max = 65536fs.inotify.max_user_watches = 1048576kernel.kptr_restrict = 1kernel.ctrl-alt-del = 1EOFsysctl -p
  • 提高系统打开文件数、打开进程数限制,减小默认栈空间大小限制:

    echo '* - nofile 1048576' >> /etc/security/limits.confecho '* - nproc  65536' >> /etc/security/limits.confecho '* - stack  1024' >> /etc/security/limits.conf
  • 提高Shell打开文件数、打开进程数限制,减小默认栈空间大小限制:
    cat >> /etc/profile << EOFulimit -n 1048576ulimit -u 65536ulimit -s 1024EOF

服务优化

  • 配置:

    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模块等方法扩展集群规模。

缓存:

缓存

架构:

架构

      本文转自dongsong1117 51CTO博客,原文链接:http://blog.51cto.com/dongsong/2048309,如需转载请自行联系原作者

你可能感兴趣的文章
linux 运行级别和chkconfig的用法
查看>>
PHP的$_SERVER数组字段详解
查看>>
tomcat 管理界面无法登陆
查看>>
胜者树与败者树
查看>>
java中的常量定义
查看>>
Linux中目录操作命令
查看>>
Linux下的touch命令及时间戳
查看>>
安装如Epson LQ-300K等老式打印机方法和心得
查看>>
菜鸟的第一次编程感受
查看>>
对代码命名的一点思考和理解
查看>>
shell监测mysql是否启动
查看>>
ThinkPad E40无线网卡驱动安装 FOR CENTOS6.3
查看>>
多站点配置
查看>>
JS学习随记_day04
查看>>
变态工作之修改hibernate让其支持null主键
查看>>
搜索引擎的分片(shard)和副本(replica)机制
查看>>
pcb中的电子学基础
查看>>
笔记本wifi灯不亮了怎么办?
查看>>
06、开源游戏-“胡子”开始界面设计-代码
查看>>
使用IntelliJ IDEA开发SpringMVC网站(二)框架配置
查看>>