2019独角兽企业重金招聘Python工程师标准>>>

硬件优化

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

核心数: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_recycle = 1
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模块等方法扩展集群规模。

缓存:

架构:

转载于:https://my.oschina.net/dongsong/blog/1510042

Linux服务简单优化相关推荐

  1. linux服务日常优化

    linux 服务装机前的优化工作. echo ">/etc/udev/rules.d/70-persistent-net.rules" >/etc/rc.local 开 ...

  2. linux发布成服务,linux服务简单部署

    1.后台运行 在linux下运行一个程序,打开终端,如果是可执行文件则是 ./binary_name 如果是python脚本,运行命令是python file_name.py 此时的程序运行时依赖于当 ...

  3. linux服务精简优化解析,CentOS系统环境精简优化详解

    第一步.删除不必要的自带软件包 yum remove Deployment_Guide-en-US finger cups-libs cups ypbind yum remove bluez-libs ...

  4. 动手造轮子:实现一个简单的依赖注入(二) --- 服务注册优化

    动手造轮子:实现一个简单的依赖注入(二) --- 服务注册优化 Intro 之前实现的那版依赖注入框架基本可用,但是感觉还是不够灵活,而且注册服务和解析服务在同一个地方感觉有点别扭,有点职责分离不够. ...

  5. windows8下linux deepin双系统安装,记录一次Windows+Deepin双系统安装及简单优化

    记录一次Windows+Deepin双系统安装及简单优化 Mkdir700 • 2020 年 03 月 08 日 Loading... ![zh-2.jpg][1] 最近买了块500G的固态硬盘 买了 ...

  6. linux pureftpd 卸载,lnmp卸载pureftpd服务简单命令

    原标题:lnmp卸载pureftpd服务简单命令 本文主要说的是lnmp环境下使用了winscp之后,卸载pureftp服务的流程,主要给新手小白看的,老鸟请略过吧. 之前针对lnmp一键包的ftp上 ...

  7. [RHEL5企业级Linux服务攻略]--第9季 Squid服务全攻略之高级配置

    企业环境 公司搭建一台代理服务器,需要提高内网访问互联网速度并能够对内部员工的上网行为进行限制,采用squid代理服务器软件,对内部网络进行优化. 需求分析 提高用户访问速度,需要对squid服务器进 ...

  8. Linux服务器性能优化

    Linux服务器性能优化 一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id" ...

  9. Linux服务器的优化

    Linux服务器的优化 服务器的优化是我们最小化安装系统时应该做的事情.其实,在做这项工作之前,我们就应该根据实际应用需求来选购Linux服务器,然后有所偏重地选择硬件,比如我们应该根据服务器的应用来 ...

  10. 刚装完系统的简单优化

    第1章安装linux系统后调优及安全设置 1.1 关闭SELinux功能 [root@moban /]# sed -i 's/SELLINUX=enforcing/SELINUX=disabled/g ...

最新文章

  1. Linux上安装jdk并配置环境变量
  2. 阿里数据中台系列之Apsara Stack控制台报警管理(三)
  3. 在Cisco路由器上配置WCCP
  4. c语言fopen_s的用法,fopen和fopen_s用法的比较
  5. MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具
  6. h5+js调取相机做取景框_Ps绘制超复杂逼真相机图标
  7. 学会用感情营销是最高的智慧
  8. golang使用go Modules相关命令时报错
  9. (03)_k8s之flannel三种模型安装部署详解
  10. ARM处理器比较:A8/A9
  11. Windows10访问共享总是提示输入网络凭证不正确
  12. PHP strtotime()函数
  13. pushstate 和 popstate的用法详解
  14. 使用基因组圈图表示变异在基因组内位置|R circlize包
  15. 动态canvas 相册简单效果展示
  16. 劈尖干涉公式_劈尖干涉条纹数的计算
  17. 第三个脚本——时间加速and视频倍速
  18. 直线方程的点斜式、两点式、斜截式的公式是什么
  19. 本地环境wordpress修改php.ini,wordpress修改php.ini的方法
  20. 如何利用OUTLOOK邮箱提醒你每天上课把课程表导入日历

热门文章

  1. SpringBoot+zk+dubbo架构实践(一):本地部署zookeeper
  2. ai png转矢量图_Boxy SVG for Mac(矢量图编辑器)
  3. lnmp升级PHP环境
  4. PHP报错Warning: Unknown: Input variables exceeded 1000
  5. win10系统下安装Consul
  6. 结构体转map[string]interface{}的若干方法
  7. linux中id命令的功能,linux中的id命令
  8. PCA相关 PCL库和Matlab对比
  9. RSA加密:javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes
  10. WORD的一个BUG