读发布!设计与部署稳定的分布式系统(第2版)笔记07_线程阻塞

news2024/6/30 22:58:00

 

1. 通过增加复杂性解决一个问题,会产生全新系统失效方式的风险

2. 多线程技术使应用程序服务器具有足够的容量扩展能力,来满足Web上最大站点的需求

2.1. 产生并发错误的可能性

3. 服务器的进程正在运行

3.1. 并不能帮助用户完成工作

3.2. 模拟客户端使用系统的体验,与真实用户是相同的

3.3. 该客户端无法进行合成事务,那么无论服务器进程是否正在运行,都可判断系统存在问题

3.4. 使用度量指标快速揭示问题,不必非要等到系统告警

3.5. 用外部监控补充内部监控

3.5.1. “系统崩溃”和“系统停止响应”之间区别

4. 多线程问题

4.1. 错误条件和异常会产生太多的排列组合,难以进行全面彻底的测试

4.2. 意外的交互可能会在先前安全的代码中引入问题

4.3. 运行时机至关重要,应用程序停止响应的概率会随着并发请求数量的增加而增加

4.4. 开发工程师从来不会为了测试而向应用程序发送10000个并发请求

5. 谨慎使用缓存

5.1. 滥用缓存可能造成新问题

5.2. 缓存能有力地解决性能问题

5.2.1. 减少数据库服务器的负载

5.2.2. 缩短响应时间

5.2.2.1. 将其控制在不进行缓存所用时间以内

5.3. 所有应用程序级别缓存的最大内存使用量,应该是可配置的

5.3.1. 不限制最大内存使用量的缓存,最终会消耗系统的可用内存

5.4. 缓存消耗了其他任务所需的内存,实际上会导致系统严重降速

5.5. 无论缓存上设置了多大的内存,都需要监视缓存项的命中率

5.5.1. 检查是否大多数缓存项已被使用

5.5.2. 命中率非常低,那么缓存就不会获得任何性能优化

5.5.3. 实际上还可能比不使用缓存更慢

5.6. 把数据保存在缓存中,其实是一次投注

5.6.1. 押宝“一次生成数据的成本,加上散列和查找数据的成本,不超过每次需要生成该数据时的所需成本”

5.7. 如果一个特定的缓存对象,在服务器的生命周期中只使用一次,那么缓存它就没有任何意义

5.8. 避免缓存特别容易生成的数据

5.9. 通过使用弱引用持有缓存项本身构建缓存

5.10. 任何缓存都存在数据过时的风险

5.10.1. 每个缓存都应该有一个失效策略,当其源数据发生变更时,能够在缓存中删除缓存项

6. 选择精心设计并经过验证的代码库

6.1. 构造可靠、安全、高性能的连接池,总是会比想象的困难许多

6.2. 所有的问题都可能潜伏在第三方代码的阴影中

6.2.1. 相比闭源程序库,更喜欢开源程序库

6.3. 程序库都是导致线程阻塞的源头

6.3.1. 如果是开源库,那么就可能有时间、技能和资源来查找和修复这些问题

6.4. 集成点附近经常出现线程阻塞

6.4.1. 线程阻塞和缓慢响应会创建一个正反馈循环,将小问题放大到系统的完全失效

6.5. 线程阻塞反模式是大多数系统失效的直接原因

6.5.1. 线程阻塞反模式会导致同层连累反应和层叠失效

6.5.2. 常见的系统逐渐变慢和服务器停止响应

7. 使用超时模式进行保护

7.1. 虽然无法证明代码不会发生死锁,但可以确保死锁不会一直持续下去

7.2. 避免函数调用中的无限等待,使用需要超时参数的函数版本

7.3. 即使意味着需要更多的错误处理代码,调用过程中也要始终使用超时模式

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

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

相关文章

RK3588平台开发系列讲解(导读篇)旗舰芯片RK3588介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、 视频了解二、特性说明三、性能比较沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍旗舰芯片RK3588。 自瑞芯微RK3588最初的发布时间已经过去了两年多,如今RK3588终于进入了落地阶段,搭载RK3…

电脑添加夏普(sharp)打印机 从磁盘安装驱动过程

今天打算连实验室的打印机,是夏普的,但是我不知道具体的型号。不过有一个word文档说明怎么连,大概率需要自己下载驱动,下面就开始吧! 控制面板的操作 前面都是一样的,控制面板–>设备和打印机–>添…

Oracle-高版本SQL优化分析(bind mismatch)

背景: 接到用户报障说一套Oracle19c数据库近期出现insert语句执行变慢的情况,执行一次数据插入需要1秒的时间,而且问题发生的数据库是跑在一体机上面,数据插入正常不应该这么慢,需要分析插入慢的原因 问题: 数据库近期出现insert…

chatgpt赋能python:使用Python绘制散点图:了解基本语法,数据可视化。

使用Python绘制散点图:了解基本语法,数据可视化。 数据是任何研究的基石,因此对于从事各种数据处理工作的人员来说,数据可视化是一个非常重要的工具。Python作为一种非常受欢迎的编程语言,具有广泛的应用,…

centos7虚拟机安装

提前创建好一个非系统盘的文件路径,存放centos虚拟机的系统文件 下载centos 7 centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com) 先创建新的虚拟机 点击下一步 点击下一步 点击下一步 选择Linux(L)和CentOS 7 64位,然后点击下一步 位置…

编译原理笔记5:从正规式到词法分析器(2):NFA 记号识别、确定化、并行算法、子集法构造DFA

目录 NFA 识别记号的并行方法NFA 上识别记号的确定化方法状态集 T 的 ε-闭包(T)ε-闭包算法 NFA 并行算法NFA 并行算法例:识别 abb 和 abab 从 NFA 到 DFA(子集法构造 DFA ) NFA 识别记号的并行方法 之前的文章中写过的 “用一个输入字符串…

【八大排序(八)】归并排序高阶篇-非递归版

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:八大排序专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 归并非递归版 1. 前情回顾2. 归并非递归基…

JVM的内容

0、Java基础考点 1、谈谈你对Java的理解 平台无关性(一次编译,到处运行)GC(垃圾清理)语言特性(泛型、反射)面向对象(封装、继承、多态)类库异常处理 2、Java是如何实现平台无关性的(一处编译,到处运行) 编译时(语法和语义进行检测&#xf…

0012-TIPS-pawnyable : Use-After-Free

原文 Linux Kernel PWN | 040203 Pawnyable之UAF https://pawnyable.cafe/linux-kernel/LK01/use_after_free.html 题目下载 漏洞代码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/cdev.h> #include <linux/fs.h> #includ…

【踩坑】Windows11安装WSL2,然后装miniconda

Windows11安装WSL2 跟着官方文档一步步来就完事了&#xff0c;你要在vscode上用还是用docker都有教程微软WSL文档 遇到问题 Installing, this may take a few minutes… WslRegisterDistribution failed with error: 0x80370102 Please enable the Virtual Machine Platform W…

chatgpt赋能python:Python收费怎么办?

Python收费怎么办&#xff1f; Python是一门非常流行的编程语言&#xff0c;特别是在数据科学和机器学习领域中。许多人使用Python来编写自己的应用程序和脚本&#xff0c;但是有些人会对Python的收费问题感到困惑。本文将介绍Python的收费情况以及如何解决这个问题。 Python…

Shell - 02_shell的自定义变量

一、shell的自定义变量 1.定义变量&#xff1a;变量名变量值 如&#xff1a;num10 2.引用变量&#xff1a;$变量名 如&#xff1a;i$num 把变量 num 的值付给变量 i 3.显示变量&#xff1a;使用 echo 命令可以显示单个变量取值 如&#xff1a;echo $num 4.清除变量&…

高校学生公寓安全用电物联网平台的应用

摘要:本文针对高校学生公寓用电特点,从安全用电角度提出了一套集用电管理、计量、恶性负载智能识别控制、实时跟踪检测等功能于一体的数字化安全用电管理系统技术解决方案———学生公寓智能控电管理系统。 关键词:公寓恶性负载安全用电智能系统 0、引言 近年来,为了响应国家…

webpack编译打包

1.安装webpack npm install webpack webpack-cli --save-dev 2.添加命令 在package.json文件中添加启动命令 3.打包 webpack.config.js文件 通过配置文件构建&#xff1a;npx webpack --config webpack.config.js 4.文件结构 src:用于存放代码&#xff0c;一般入口为index.…

HQChart实战教程64-自定义分时图标题栏

HQChart实战教程64-自定义分时图标题栏 分时图标题栏步骤1. 替换分时图标题格式化输出函数2. 格式化输出函数说明HQChart插件源码地址完整的demo源码分时图标题栏 分时图标题栏显示的是当前十字光标所在位置的分钟信息,显示在分时图窗口顶部。一般会显示品种的名称,日期,时间…

android内部存储和外部存储

我们在开发Android应用的过程中&#xff0c;避免不了要用到数据持久化技术&#xff0c;所谓的数据持久化就是将RAM中的瞬时数据保存到ROM中&#xff0c;保证在App退出或者手机关机后数据不会丢失。我们常用的数据持久化的方式有文件存储&#xff0c;数据库存储&#xff0c;Shar…

动手实现条件随机场(下)

引言 本文基于PyTorch实现条件随机场&#xff0c;实现CRF层参考论文Neural Architectures for Named Entity Recognition中关于CRF层的描述。包含大量的图解和例子说明&#xff0c;看完一定能理解&#xff01; 论文地址&#xff1a; https://arxiv.org/pdf/1603.01360.pdf 也可…

chatgpt赋能python:Python搜索算法:如何提高你的搜索体验

Python 搜索算法&#xff1a;如何提高你的搜索体验 在当今信息爆炸的时代&#xff0c;搜索已成为许多人获取信息的主要途径。而 Python 的搜索算法&#xff0c;也在此背景下日渐受到重视。本篇文章将深入探讨 Python 搜索算法&#xff0c;介绍以及如何使用它来提高你的搜索体验…

SpringBoot整合模板引擎Thymeleaf(5)

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 概述 在本节教程中&#xff0c;我们在之前案例的基础上详细介绍利用Thymeleaf实现国际化。 项目结构 依赖文件 请在pom.xml文件中添加如下依赖。 <?xml version"…

Android 9 蓝牙协议初始化

先讲一下Application类的使用 要使用自定义的Application&#xff0c;首先就是要自己新建一个Application的子类&#xff0c;然后把它的名字写在manifest文件里面的application标签里的android:name属性就行&#xff0c;如我的Application子类名字是BaseApplication&#xff0c…