14、应用层优化

常见问题

  1. 什么东西在消耗系统中每台主机的CPU、磁盘、网络,以及内存资源
  2. 应用真的需要所有获取到的数据吗
  3. 应用在处理本应由数据库处理的事情吗
  4. 应用执行了太多的查询吗
  5. 应用执行的查询太少吗
  6. 应用创建了没必要的Mysql连接吗
  7. 应用对一个Mysql实例创建连接的次数太多了吗
  8. 应用做了太多的垃圾查询吗
  9. 应用使用了连接池吗
  10. 应用是否使用了长连接
  11. 应用是否在不使用的时候还保持连接打开

Web服务器问题

最常见的问题是保持他的进程的存活时间过长,或者在各种不同的用途下混合使用,而不是分别对不同类型的工作进行优化。
另一个主要问题是如果开启了 Keep-Alive 设置,进程可能很长时间处于繁忙状态。当然即使没有开启 Keep-Alive ,某些进程也可能存活很久。

寻找最优并发度

每个Web服务器都有一个最佳并发度,就是说让进程处理请求尽可能快,并且不超过系统负载的最优的并发连接数。

缓存

缓存对高负载应用来说是至关重要的,一个典型的Web应用程序会提供大量的内容,直接生成这些内容的成本比采用缓存要高得多,所以采用缓存通常可以获得数量级的性能提升。
可以把缓存分成两大类:被动缓存和主动缓存。被动缓存除了存储和返回数据外不做任何事情。当从被动缓存请求一些内容时,要么可以得到结果,要么返回空。
主动缓存则会在访问命中时做一些额外工作。通常会将请求转发送给应用的其他部分来生成请求结果。

应用层以下的缓存

Mysql服务器有自己的内部缓存,但也可以构建自己的缓存和汇总表。可以对缓存定制,使得他们最有效地过滤、排序、与其他表关联,计数等。

应用层缓存

因为应用可以缓存部分计算结果,所以应用层缓存可能比更低层次的缓存更有效。所以应用层缓存可以节省两方面的工作:获取数据以及基于这些数据进行计算。
但应用层缓存也有缺点,那就是缓存命中率可能更低,并且可能使用较多的内存。
应用缓存主要有以下几种:

  1. 本地缓存
  2. 本地共享内存缓存
  3. 分布式内存缓存
  4. 磁盘上的缓存

缓存控制策略

缓存也有像反范式化数据库设计一样的问题:重复数据,也就是说有多个地方需要更新数据,所以需要想办法避免读到脏数据,下面是一些常见的缓存控制策略:

  1. TTL

缓存对象存储时设置一个过期时间,可以通过清理进程在达到过期时间后删除对象。

  1. 显示失效

如果不能接受脏数据,那么进程在更新原始数据时需要同时使缓存失效。这种策略有两个变种:写失效和写更新。写失效很简单,只需要标记缓存数据已经过期。写更新需要再更新数据时替换掉缓存项。

  1. 读时失效

在更改旧数据时,为了避免要同时失效派生出来的脏数据,可以在缓存中保存一些信息,当从缓存中读数据时可以利用这些信息判断数据是否已经失效。

缓存对象分层

分层缓存对象对检索、失效和内存利用都有帮助。可以缓存关系搜索的最小信息,而不必缓存整个列表。
缺点就是相对于一次性获取整个搜索结果,必须在缓存中检索多个对象。

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

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

相关文章

unity C# 中一看就会的try-catch-finally、throw

文章目录 1、C# 异常处理原理:2、C# 异常处理实用案例(简化版示例):3、throw关键字 C# 异常处理是一种用于捕获和处理程序运行时错误的机制,它允许程序在遇到不可预见或非正常条件时进行优雅地恢复或失败。C# 中的异常…

MySQL模糊查询详解

MySQL模糊查询详解 一、什么是模糊查询二、MySQL中的模糊查询2.1 使用LIKE关键字2.2 使用正则表达式(REGEXP)2.3 使用BETWEEN AND2.4 使用IN操作符2.5 使用IS NULL操作符 💖The Begin💖点点关注,收藏不迷路&#x1f49…

Rust 圣经 阅读 字符、布尔、单元类型

字符类型(char) Rust 的字符不仅仅是 ASCII ,还包含所有的 Unicode 值,包括单个的中文、日文、表情符号等等。 Unicode 值的范围从 U0000 ~ UD7FF 和 UE000 ~ U10FFFF。 因为每个 Unicode 都是 4 个字节编码,所以字符…

【小白专用】c#之FileStream对象读写大文件

提及文件流,不得不先说以下几个类 FileStream,MemoryStream,NetWorkStream,StreamReader,StreamWriter,TextReader,TextWriter 在用这些类之前,我们先来了解一下这些类的用途以及区别…

知虾皮Shopee:东南亚最受欢迎的电子商务平台

在如今数字化时代,电子商务平台成为人们购物的首选方式。Shopee作为东南亚地区最受欢迎的电子商务平台,通过其多样化的商品、便捷的购物体验和创新的商业模式,迅速在该地区占据了重要地位。本文将详细介绍Shopee的特点和优势,以及…

设计模式 七大原则

1.单一职责原则 单一职责原则(SRP:Single responsibility principle)又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合)。 描述: 类被修改的几率很大,因此应该专注…

CNN——VGG

1.VGG简介 论文下载地址:https://arxiv.org/pdf/1409.1556.pdf VGGNet 是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以 7.32% 的错误率赢得了 2014 年 ILSVRC 分类任务的亚军&#xff…

Prometheus 监控docker

查看docker运行状态 docker stats 启动docker cadvisor 直接运行docker docker run -d \--volume/:/rootfs:ro \--volume/var/run:/var/run:rw \--volume/sys:/sys:ro \--volume/var/lib/docker/:/var/lib/docker:ro \--publish8080:8080 \--namecadvisor \gcr.io/cadvisor…

2024年MySQL学习指南(二),探索MySQL数据库,掌握未来数据管理趋势

文章目录 前言4. DDL- 操作数据库4.1 查询4.2 创建数据库4.3 删除数据库4.4 使用数据库 5. DDL- 操作数据表5.1 数据类型5.2 查询表5.3 创建表5.4 删除表5.5 修改表 6. 实战案例详解 前言 接上一篇文章【2024年MySQL学习指南(一)】 4. DDL- 操作数据库 …

2023-2024 年广东省职业院校技能大赛高职组 “软件测试”赛项竞赛规程

2023-2024 年广东省职业院校技能大赛(高职组) “软件测试”赛项竞赛规程 一、赛项信息 赛项名称:软件测试 赛项编号:GZ034 赛项组别:高职组 二、竞赛目标 软件是新一代信息技术的灵魂,是数字经济发展的基础…

AWS ECS、EC2、EKS 和 Fargate 之间的关系

ECS (Elastic Container Service), EC2 (Elastic Compute Cloud), EKS (Elastic Kubernetes Service), 和 Fargate 是亚马逊 AWS 云平台上的服务,用于容器化应用程序的部署和管理。这些服务之间有一些关联,但它们在实现容器化工作负载的方式上有所不同。…

【docker】linux部署docker

简介 首先我需要声明的是,我的系统是centos7,下载工具使用的是yum;在linux上部署docker,之前一直看的是这篇文章Linux之Docker部署,基本上功能方面也都可以使用,部署起来也是比较的简单。首先我先讲述这篇…

LeetCode 每日一题 Day 32 ||递归单调栈

2487. 从链表中移除节点 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1: 输入:head [5,2,13,3,8] 输出:[13,8] 解释:需要移除的节点是 5 ,2 和 3 。…

大数据 - Doris系列《二》- Doris安装(亲测成功版)

目录 🐶2.1 安装前准备 🥙1.设置系统最大文件打开句柄数 >启动一个程序的时候,打开文件的数量就是句柄数 🥙3.时钟同步 🥙4.关闭交换分区(swap) 🐶2.2 安装FE &#x1f436…

Prometheus监控redis

Redis 服务 启用 cat >docker-compose.yml<<EOF version: 3 services:redis:image: redis:5container_name: rediscommand: redis-server --requirepass 123456 --maxmemory 512mbrestart: alwaysvolumes:- /data/redis/data:/dataports:- 6379:6379 Redis_exporter…

python基础教程四(字符串相关常用方法)

字符串的方法特别多&#xff0c;这里只介绍一些最用用的。 1:count count方法和列表的count方法类似就是求某个值在字符串中出现了几次 例如: >>a"dsadsdsad" >>a.count() 22:center 方法center通过在俩边添加字符&#xff08;默认是空格&#xff09;让…

论文悦读(7)——NVM文件系统之Trio(SOSP‘23)文件系统

TRIO&#xff08;SOSP23&#xff09; 1. 背景&#xff08;Background&#xff09;1.1 NVM Technologis1.2 File System Customization1.3 Userspace NVM File Systems 2. 观察与动机&#xff08;Observation & Motivation&#xff09;3. 设计与实现&#xff08;Design &…

Linux: syscfg: network:inet_peer_threshold

inet_peer_threshold&#xff0c;默认值就是64K https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html 这个一般人应该用的非常少&#xff0c;因为个人电脑&#xff0c;很难说会达到这么多的peer量。 如果抛开&#xff0c;“INET peer storage”这个标题&#x…

JMeter 插件大全:详细介绍 Jmeter 常用插件

JMeter作为一个开源的接口性能测试工具&#xff0c;其本身的小巧和灵活性给了测试人员很大的帮助&#xff0c;但其本身作为一个开源工具&#xff0c;相比于一些商业工具&#xff08;比如 LoadRunner&#xff09;&#xff0c;在功能的全面性上就稍显不足。这篇博客&#xff0c;就…

傅里叶级数、傅里叶变换、小波变换、离散余弦变换的理解

目录 1. 傅里叶级数2.傅里叶变换 1. 傅里叶级数 功能&#xff1a;能把任意周期性函数展开成一系列正弦、余弦函数的和。 公式&#xff1a; f ( x ) a 0 2 ∑ n 1 ∞ ( a n cos ⁡ ( 2 π n x T ) b n sin ⁡ ( 2 π n x T ) ) 傅里叶系数 a n 2 T ∫ x 0 x 0 T f ( x )…