处理过程

  • 浏览器发送请求经过网络到达web服务器
  • web服务器处理请求并响应数据
  • 响应数据从web服务器发送到用户端
  • 用户浏览器接收数据,本地计算渲染

指标

  • 响应时间
  • 吞吐量

响应时间

  • 响应时间 = 发送时间 + 传输时间 + 处理时间
  • 发送时间 = 数据量比特数 / 带宽
  • 传输时间 = 传播距离 / 传播速度

缩短处理时间

  • 单机性能优化
  • 集群
  • 缓存
  • 瓶颈点优化
  • 多机房部署,就近访问

单机架构

  • 单机模式

    • 单台服务器web+DB
    • 数据库每日凌晨备份,保存到本地
  • 动静分离
    • 单台服务器web+DB 
    • Nginx+PHP实现动静分离
    • 数据库每日凌晨备份,保存到本地 
  • 数据库分离
    • 将web服务器和数据库单独部署
    • web服务器资源备份到数据库服务器
    • 数据库每日凌晨备份存放到web服务器
  • 组件分离
    • 静态服务器使用单独的服务器
    • 静态服务器使用独立一级域名防止Cookie提交
    • 静态服务器使用多个二级域名提高加载速度(下载网页数据,每遇到1个图片,浏览器会开启1个线程去下载,每个域名只能开6-8个线程)
    • 静态资源作为NFS,静态资源存放于NFS上
    • 数据库每日凌晨备份到NFS上

web性能优化

  • CPU

    • 进程数
    • CPU绑定
  • 内存
    • JVM设置
    • GC优化
    • 大页内存
    • 内存合并
  • 磁盘
    • Openfile
    • Sendfile
    • IO调度算法
  • 网络
    • Epool
    • Socket优化
    • 持久连接
  • 随机端口限制

    • 65536(2^16-1)
    • nc -l -4 -p 9999 -k
    • nc 192.168.174.111 9999

    • TCP状态转换:FIN_WAIT2,TIME_WAIT(主动关闭方,1个60s,消耗socket)

    • TIME_WAIT优化

      • reuse:都可以开,时间戳(timestamps)要开
      • recycle:不等60s,快速销毁TIME_WAIT,当客户端出于NAT网络时,不能打开(网关 / 负载均衡器,多个客户端通过一个IP访问外网)
    • 绑定多个ip地址  
  • 性能测试
    • ab -n 10000 -c -1000 http://www.baidu.com/
    • 以1000个并发,共10000个请求访问百度
    • 报错:too many open file(默认1024)
    • 1个http请求对应1个tcp,对应1个socket文件
    • ulimit -a

参考

运维知识体系

https://www.unixhot.com/page/ops

TCP的随机端口为什么不能像服务端口一样复用?

https://www.zhihu.com/question/342296674

[web] 系统运维--单机的更多相关文章

  1. 解决CentOS无法显示中文字体 | 系统运维 | Web2.0

    解决CentOS无法显示中文字体 | 系统运维 | Web2.0 About Me    博客园    devops    前端    张家港水蜜桃 傍晚好! 2013年09月12日 17:56:08 ...

  2. 浅谈Linux系统运维工程师必备技能

    一.什么是运维工程师 相信读者们必定听说过Linux,也听说过运维工程师.那么运维工程师是个什么概念呢? 百度百科上的官方解释如下: 运维工程师(Operations)在国内又称为运维开发工程师(De ...

  3. Linux系统运维笔记(五),CentOS 6.4安装java程序

    Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选  ru ...

  4. Linux系统运维笔记(四),CentOS 6.4安装 MongoDB

    Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  5. Linux系统运维笔记(四),CentOS 6.4安装Nginx

    Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...

  6. Linux系统运维笔记(三),设置IP和DNS

    Linux系统运维笔记(三),设置IP和DNS 手工配置静态的IP地址 也就是手工配置IP地址.子网掩码.网关和DNS. vi /etc/sysconfig/network-scripts/ifcfg ...

  7. Linux系统运维笔记(二),Linux文件编辑命令

    Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...

  8. Linux系统运维笔记(一),查看系统版本和设置系统时间

    Linux系统运维笔记 查看系统版本和设置系统时间 查看系统版本 lsb_release -a (适用于所有的linux,包括Redhat.SuSE.Debian等发行版,但是在debian下要安装l ...

  9. Linux系统运维笔记(6),CentOS 7.6双网卡路由配置

    Linux系统运维笔记(6),CentOS 7.6双网卡路由配置. 一,先确认系统版本: [root@localhost ~]# cat /etc/redhat-releaseCentOS Linux ...

随机推荐

  1. vue之mixin理解与使用

    使用场景 当有两个非常相似的组件,除了一些个别的异步请求外其余的配置都一样,甚至父组件传的值也是一样的,但他们之间又存在着足够的差异性,这时候就不得不拆分成两个组件,如果拆分成两个组件,你就不得不冒着 ...

  2. 洛谷P1290欧几里德游戏

    题目地址 题目大意: 两个人st和ol博弈 有两个整数n,m 每次轮到一个人时候,需要选择用大的那个数减去小的那个数的倍数(不能减为负数) 最后得到0的为胜利者 思路: (以下讨论均在n<m的条 ...

  3. 第30 章 : 理解 RuntimeClass 与使用多容器运行时

    理解 RuntimeClass 与使用多容器运行时 本文将主要分享以下三方面的内容: RuntimeClass 需求来源 RuntimeClass 功能介绍 多容器运行时示例 RuntimeClass ...

  4. day-05-字典

    字典的初识 why: 列表可以存储大量的数据,但数据之间的关联性不强 列表的查询速度比较慢.数量越大查询越慢 what:容器型数据类型:dict how: 数据类型的分类(可变与不可变) 可变(不可哈 ...

  5. Spring Boot 2.3.0 新特性Redis 拓扑动态感应

    本文为原创文章.欢迎任何形式的转载,但请务必注明出处 冷冷https://lltx.github.io. Spring Boot 2.3 新特性优雅停机详解 Spring Boot 2.3 新特性分层 ...

  6. Go-14-解决 go get golang.org/x/text 拉取失败问题

    现象 在执行go get -v github.com/spf13/cobra/cobra 时,报go get golang.org/x/text 拉取失败问题 解决方法: 在 ${gopath}/sr ...

  7. Python的文本和字节序列

    一.字符串的表示和存储 字符串是字符的序列,每个字符都有有一个数字作为标识,同时会有一个将标识转换为存储字节的编码方案: s = 'hello world python' for c in s: pr ...

  8. PAT甲级1100——1155题总结

  9. node运行的第一个helloWorld程序

    hello world 参考链接: https://www.runoob.com/nodejs/nodejs-http-server.html https://npm.taobao.org/ http ...

  10. vue.js中使用set方法 this.$set

    vue教程中有这样一个注意事项: 第一种具体情况如下: 运行结果: 当利用索引改变数组某一项时,页面不会刷新.解决方法如下: 运行结果: 三种方式都可以解决,使用Vue.set.vm.$set()或者 ...