AB PLC MSG指令UDP通讯报错排查:实时观察窗口引发的通讯负载危机

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

我们这次聊一个真实现场里排查出来的通讯问题,案例编号我这边归到了LAT1376。简单说,就是上位机监控软件里启用了“实时观察窗口”,结果AB PLC的MSG指令开始不断报错,整个产线频繁弹“应用程序与本地LM通讯出错”。这个案例很有代表性,牵扯到PLC通讯任务调度、上位机轮询机制、UDP通讯稳定性等多个层面,不是简单一句“网络断开了”就能解释的。如果你也在维护AB PLC和相关上位机系统,尤其是用到MSG指令做UDP通讯的场景,这篇文章建议耐心看完。

先说清楚,这个“实时观察窗口”不是PLC编程软件里的在线监视表格,而是上位机监控系统里的一块数据看板,用来实时刷新指定标签的最新数值。它本身是个调试利器,生产稳定后一般不会有人一直开着,但只要有人开了它没关,后续通讯出错就是时间问题。接下来我把整个排查过程、根因分析、解决手段和避坑心得都整理出来,方便你遇到类似问题时少走弯路。

1. 事件背景与故障现象记录

1.1 现场通讯架构与设备组成

这个案例发生在一套典型的离散制造产线上,整线的主控设备是美国罗克韦尔自动化旗下AB品牌的CompactLogix系列PLC。PLC通过EtherNet/IP网络连接本地IO站、视觉系统、机器人控制器以及多台第三方设备。工位之间的联锁信号一部分走硬接线,一部分走MSG指令,通过以太网报文完成数据交换。

上位机采用C/S架构,服务器端负责采集PLC实时数据,HMI操作员站通过内部网络读取服务器数据。服务器与PLC之间的通讯主要走UDP协议,因为UDP无连接、开销小,适合周期性状态刷新,只要数据包结构设计合理,可靠性完全能满足产线需求。实际运行中,上位机在10毫秒到50毫秒之间会向PLC发送一次读取请求,PLC里的MSG指令则负责响应上位机请求,同时完成和其他设备的少量数据交换。

1.2 从正常到异常的变化过程

产线原本运行得很稳定,通讯错误极少发生。后来有一天中控室的工程师为了观察某个温度变量的变化趋势,在上位机上打开了“实时观察窗口”,把这个温度标签添加到窗口中,并且默认的刷新周期设为最快档位。这个动作在午休时间进行,当时产线刚好在待料状态,没有立刻暴露问题。

到了下午恢复生产后,操作员开始频繁报告一个现象:HMI画面弹出错误提示“应用程序与本地LM通讯出错”,频率大概每两到五分钟一次。点掉之后,过几分钟又来一次,严重的时候甚至导致机械手暂停动作,等待人工复位。与此同时,PLC侧虽然没有停机,但MSG指令的错误计数器里出现了大量超时记录,部分与机器人控制器的数据交互偶尔会读到旧值。

我调取了上位机的通讯日志和PLC内的故障日志,发现一个非常明显的规律:凡是错误发生的时间段,“实时观察窗口”都处于开启状态。关闭这个窗口之后,通讯错误在半小时内逐渐消失,重新开启,错误在两三分钟之内再次出现。到这里,基本可以断定问题出在“实时观察窗口”和相关通讯链路之间,而不是交换机、网线或者PLC程序本身。

1.3 错误提示的常见表现形式

这里多说一句,现场这种“应用程序与本地LM通讯出错”其实算是个比较笼统的提示,不同版本的上位机软件给出的中文翻译略有差异,但本质上都是指上位机应用程序与底层通讯模块(LM,Local Module)之间出现了数据通路异常。很多人一看到这个提示就以为是网线松了,或者IP冲突,实际排查下来往往不是。

结合这个案例,我整理了一下日常最容易出现的几种提示和实际对应原因。下表供你参考:

提示文案 常见时间段 实际对应问题
应用程序与本地LM通讯出错 开启实时观察窗口后周期性出现 通讯负载过高导致请求无响应
读写超时码 16#0204 程序启动或更换槽位后 路径配置错误或目标节点不在线
MSG指令错误 16#0001 报文发送失败 连接被对端拒绝,端口或缓存冲突
数据更新缓慢但不报错 持续运行数小时后 缓存队列堆积,采样周期过长

所以遇到这类错误,第一步不是急着换硬件,而是先把时间点和操作动作对上,再根据错误码缩小范围。

2. 排查思路与根因分析

2.1 第一轮排查:物理层和基础网络

刚开始我按常规套路做了一遍排查。先看交换机端口状态,确认没有CRC错误包和丢包;然后用笔记本直连PLC的网口做长时间Ping测试,丢包率低于0.01%,网络本身是健康的。随后检查了PLC的CPU负载率,发现大多数时间在12%左右,并没有出现CPU过载的情况。

这一步排除了物理链路和PLC运算能力的问题。但这里要提醒一个细节: Ping通了不代表应用层通讯就是正常的。 Ping使用的是ICMP协议,而PLC的MSG指令和上位机数据采集走的是EtherNet/IP协议栈,两者在CPU里的处理路径不同。网络层正常,应用层照样可能因为队列拥塞、通讯模块忙不过来而报错。所以排查要深入到协议栈层面,不能停留在“能Ping通就说明没问题”这个层面。

2.2 第二轮排查:通讯负载与采样频率

既然物理层没问题,那问题大概率出在通讯逻辑上。我在上位机服务器上打开了进程监控,发现打开“实时观察窗口”之后,对应进程的每秒钟数据请求次数从原来的约30次直接飙到了将近600次,增长了近20倍。

这里要说一下原理。普通的周期数据采集是服务端按固定时间片把所有需要的点一次性打包读取,比如50毫秒读一次,每次读几十个标签,报文可以合并,效率很高。但“实时观察窗口”的工作方式不太一样,它为了保证显示效果,会针对窗口里每个标签进行独立高速刷新。如果这个窗口里有五个标签,每个标签都要求最高10毫秒刷新一次,那每秒钟就额外多了500个数据请求。

这些请求会直接转化为MSG指令或EtherNet/IP数据包发送给PLC。PLC的通讯模块处理这些请求需要占用CPU时间片,如果PLC本身还要执行运动控制、逻辑扫描和与其他设备交互,通讯任务优先级不够高时就会排队。队列一长,报文处理不及时,上位机那边就显示超时,报“通讯出错”。

2.3 第三轮排查:MSG指令与UDP报文冲突

再往深了挖,我发现了一个更有意思的问题。这台CompactLogix PLC里除了响应上位机的周期性读取之外,还使用MSG指令主动往机器人控制器发一个数据包,内容是一些联锁状态和当前工位信息。这条MSG走的是UDP协议,目标端口是机器人的5001端口。

在没有开启实时观察窗口的时候,上位机的数据请求是低频且聚合的,PLC通讯模块有足够空闲时间处理这条主动发送的MSG指令,所以机器人控制器每50毫秒能稳定收到一次数据。但是当实时观察窗口开启后,高频的标签读取请求占用了大量通讯处理资源,那条主动MSG指令的执行周期被拉长,从50毫秒一次变成了200毫秒甚至更久一次,而且偶尔会因为通讯缓冲区满而重发。

机器人控制器那边有接收超时保护,要求数据更新间隔不能超过150毫秒。一旦超过这个阈值,机器人就会判定通讯异常,进入保持状态,同时向上位机反馈一个错误代码,最终在HMI上显示出“应用程序与本地LM通讯出错”的提示。这也就解释了为什么错误是偶发且周期性出现,而不是持续报错。

2.4 根本原因总结

这个案例的根本原因可以归纳成一句话: 实时观察窗口引入了高频且缺乏收敛的数据请求,压垮了PLC通讯模块的响应能力,间接影响了MSG指令的发送时序,进而触发整条链路的保护机制。

不是实时观察窗口本身有Bug,也不是PLC硬件不稳定,而是这个功能的使用场景和产线实时性要求冲突了。对于一个不需要持续监控所有变量、只保留必要报警和状态数据的生产系统来说,给调试人员开放高频精细化监控的权限,本身就是个风险点。

3. 解决方案与参数调整实操

3.1 立即可行的临时处置措施

问题定位后,最直接的措施就是把“实时观察窗口”关闭,然后用普通的数据报表页面替代。这个操作在当天下午就执行了,产线通讯恢复了正常。如果你现在正被同样的问题困扰,第一反应也应该是一样:先去掉额外负载,恢复生产,再考虑怎么根治。

临时关闭窗口时,要注意几件事。一是关闭前把窗口内的标签清单截图留存,方便后续做成固定报表;二是检查是否有其它窗口也被自动打开,有些上位机软件会在启动时自动加载上次关闭前的视图,结果你今天关掉,明天重启电脑它又自动打开了;三是确认HMI操作员站的登录权限,不同权限等级能访问的画面不一样,避免操作员无意中又打开实时窗口。

3.2 长期方案一:调整采样周期与聚合缓存

如果某些关键参数确实需要实时观察,不能简单关掉,那就得从采样策略上想办法。

首先是调整采样周期。绝大多数“实时观察窗口”并不需要真正的毫秒级刷新。温度、压力、流量这类过程量,100毫秒甚至200毫秒刷新一次完全够用。只有速度环、位置环或者设备互锁信号才可能需要更高频率,但这类信号一般也不会通过上位机窗口来看,而是直接看PLC内的趋势图。所以在创建观察窗口时,把刷新周期从最快档改成100毫秒或者500毫秒,负载就会立刻降下来。

其次是启用聚合缓存。结构良好的上位机通讯库通常支持批量读取,也就是把多个变量合并成一个“标签组”,一次性发送一个读取请求,然后从返回的数据块里解析所有变量的值。这样做的好处是,无论你监控的是1个变量还是20个变量,网络上的报文数量基本不变,只是单包数据的有效载荷变大了。以本例来说,把实时观察窗口用的变量全部纳入同一个读取组,请求次数就能从每秒600次降回到每秒30次左右。

3.3 长期方案二:优化PLC侧MSG指令配置

除了上位机侧调整之外,PLC侧那条主动发给机器人的MSG指令也值得优化。原程序里有个典型问题:MSG指令直接放在主程序里,每个扫描周期都会触发重新发送,没有考虑执行时间和通讯完成标志位的影响。

针对这个情况,我做了三处修改。

第一,把MSG指令的执行条件改为“按需要触发”,也就是只在特定条件满足时才允许发送,例如联锁状态变化或者每20个扫描周期发送一次。这能有效降低发送频率,又不会影响机器人对实时性的要求。

第二,给MSG指令增加了超时重试机制。波特率、超时时间这些参数需要和具体通讯对象的响应时间匹配,设置太短容易误判失败,设置太长会导致故障累积时间久。这里我设成了250毫秒超时,重试次数为2次。实测下来,即使通讯偶发拥堵,2次重试也足够让消息送达。

第三,在MSG指令的程序调用顺序上做了调整,把它从主程序高频段移到了低优先级任务里。EtherNet/IP通讯本身有数据缓冲机制,不需要程序每周期都主动盯,把收发动作交给通讯模块异步处理,CPU使用率反而会降低。

下面是修改前后的关键参数对照:

参数项 修改前 修改后
触发方式 每个扫描周期触发 状态变化触发或定时触发
超时时间 100ms 250ms
重试次数 0 2
发送频率 最高约20次/秒 约5次/秒
数据包大小 48字节 48字节

3.4 长期方案三:网络流量优先级规划

如果产线上有多个上位机、PLC和第三方设备,建议在交换机上启用QoS(服务质量)策略,给PLC通讯所需的EtherNet/IP协议包打上高优先级标记,数据采集和视频监控等流量降到普通优先级。这样即使某台电脑上的软件异常拉高通讯频率,交换机也会优先保证PLC相关报文的转发,不会让正常通讯全被挤占。

这个操作需要在可管理的工业交换机上做,通常是在每个端口上配置IEEE 802.1p优先级或者DSCP映射。EtherNet/IP对应的DSCP值一般是46(EF),可以在交换机控制台里指定。如果现场用的还是不可管理的傻瓜交换机,那至少要保证所有PLC、机器人控制器和上位机服务器都在同一个广播域内,不要跨三层网关跑大量UDP报文。

4. 常见问题与排查技巧实录

4.1 同类故障快速排查表

在实际处理过程中,我总结了一套自己用得很顺手的排查流程,分享出来给你参考。遇到类似“通讯出错”的问题,不需要一上来就改程序,按顺序走一遍,基本能定位到80%的故障点。

排查步骤 具体操作 判断标准
1. 确认故障时间点 查报警记录和上位机日志,标记首次发生时间 判断是否有人员操作或程序变更
2. 确认是否有调试性功能开启 查看实时观察窗口、在线监视、画面数据刷新页面 逐一关闭后观察是否会恢复
3. 确认网络负载 抓包或查看服务器进程每秒请求数 负载是否超过正常运行时的5倍
4. 确认PLC通讯任务负荷 看CPU利用率、MSG错误码、通讯缓冲区状态 是否有大量超时记录
5. 确认对端设备保护逻辑 查看机器人或下游设备的数据超时阈值 与本地上位机报错时间是否吻合
6. 确认交换机端口状态 查看端口丢包统计、错误帧数量 是否为0或接近0

这套流程的核心思路是: 先看应用层谁动了,再看网络层和协议层是否有异常 。很多通讯故障的根源并不在通讯本身,而是在于某个应用改变了请求行为,导致系统层面的资源竞争。

4.2 平时容易踩的几个坑

在排查这个案例的过程中,有几个坑我觉得有必要单独拿出来说。

第一个坑是“看到报错就重启”。现场很多操作员的习惯性动作是重启上位机软件或者重启电脑,原因是对“通讯出错”的恐惧,觉得不重启不放心。但在这个案例里,重启上位机只能让问题消失几分钟,因为只要你重新打开软件,它又会自动加载之前的观察窗口,数据请求又会立刻拉满,继续报错。所以恢复通讯最快的办法不是重启电脑,而是关闭实时观察窗口或停掉相关刷新线程。

第二个坑是“只调上位机不调PLC”。如果你只把上位机的采样周期调慢了,但PLC原来那条MSG指令还是每个扫描周期都发,一旦将来上位机数据量增加,PLC还是会再次成为瓶颈。通讯问题要双向优化,上位机和PLC两侧都要配合,才会有一个均衡稳定的运行结果。

第三个坑是“忽略对端设备的接收超时阈值”。本案例里的机器人控制器设置了150毫秒的数据更新超时,这个数字不一定谁家都一样。有些设备可能只有50毫秒,有些可能500毫秒都没问题。排查时要注意看通讯对端的具体参数,而不是只看自己这边的发送周期,双方不匹配会造成大量的无效重试。

4.3 一个容易被误判的相似案例

给同行提一个和本例相似但原因完全不同的故障,方便你排查时做区分。之前另一条产线上也出现过“应用程序与本地LM通讯出错”,但那个案例里没有开实时观察窗口,通讯频率也正常,最后查出来是PLC的固件版本和上位机通讯驱动不兼容,导致数据包解析偶尔出错。

区分这两种情况的方法很简单:看报错是否伴随CPU负载飙升。如果是UDP通讯被高频请求压垮,PLC的CPU负载和通讯任务处理时间会有明显抬头;如果是版本不兼容,那故障更随机,和负载关系不大,而且往往在通讯驱动升级后消失。如果你手头的现象和负载无关,建议优先检查固件和驱动版本对应关系。

5. 预防机制与后续改进建议

5.1 权限分级与操作规范

为了防止操作员或调试人员再次无意中打开实时观察窗口,我建议在上位机里建立权限分级机制。普通操作员账号只允许查看标准生产画面,不允许打开实时观察窗口或者修改视图;工程师账号可以打开,但需要在打开时强制确认采样周期,并且设定一个最长的自动关闭时间,比如两小时。有些上位机软件原生支持这种策略,如果不支持,可以用组策略或二次开发的方式做限制。

另外,操作规范上也要写明:实时观察窗口仅用于停机调试或故障分析,正常生产期间禁止开启。这个规定最好挂在部门作业指导书里,并且定期组织产线人员培训,多讲几个因为滥用监控功能导致停机的案例,比单纯念规章制度有效得多。

5.2 通讯状态监控与预警

第二个改进建议是给上位机添加通讯质量监控页面。这个页面不显示具体的工艺数据,而是显示通讯请求的成功率、平均响应时间、超时次数和最近一次错误时间。这样操作员不用等“通讯出错”弹窗才去关注网络状况,等响应时间趋势异常时就能提前预警,把问题扼杀在初期。

实现方式有两种。一种是在上位机脚本里定时把通讯质量参数写入一个专门的标签表,周期比如每5秒更新一次,然后把这个标签表映射到一个后台监视页面。另一种是直接用抓包工具或网络流量监控软件,对服务器与PLC之间的UDP流量做实时统计。前者更贴合生产网环境,不引入额外设备,推荐优先考虑。

5.3 程序侧冗余与自恢复机制

最后,可以在PLC程序里做一层自恢复机制。比如用定时器监控那条主动发给机器人的MSG指令的完成状态,如果连续三次发送失败,程序自动切换到一个备用通讯任务,同时向上位机输出一个“通讯降级”报警,而不是让设备直接进入保持状态。

这个逻辑的实现思路不复杂。先定义两个MSG指令,一个作为主通讯,一个作为备用通讯;当主通讯连续失败达到预设次数,程序把故障状态置位,并启动备用MSG重新建立连接。备用通讯的路径可以设置为完全相同的目标IP,只是端口号错开,或者准备好一条备用网线路径。这里要注意,自恢复机制必须和外部设备的重连逻辑匹配,否则你在PLC侧重发了,但机器人那边没有重新监听端口,照样无效。

根据我的经验,这种自恢复机制最大的价值不是避免所有的通讯故障,而是把偶发的瞬时干扰和真正的硬件故障区分开,让产线在干扰消除后能自动恢复,避免因为一次短暂的网络抖动就造成长时间停机。

最后再分享一点小经验

这个案例处理完之后,我在自己的运维笔记里记了一句话: 系统里每一个看似无关紧要的调试功能,在正式生产环境里都有可能成为压倒骆驼的最后一根稻草。 实时观察窗口是好功能,但不代表它适合在所有时间、所有场景下一直开着。管好权限、调好周期、做好监控,才能既保留它的便利,又不让它干扰正常生产。

如果你现在正好在查AB PLC的MSG指令UDP通讯出错,或者看到“应用程序与本地LM通讯出错”的提示,不妨先问自己一个问题:今天有没有人动过监控页面?这个答案,往往比你看一整天抓包文件更能帮你快速接近真相。

Java缓存技术详解:概念、原理与常用方案 缓存(Cache)是一种用于存储临时数据的硬件或软件组件,其核心目的是通过减少数据访问延迟来提高系统性能。在计算机科学领域,缓存充当了高速数据访问层,存储着频繁访问的数据子集,使得后续请求能够更快地得到响应,而不必每次都访问较慢的底层存储层。从本质上讲,缓存是一种典型的"空间换时间"策略,通过消耗额外的存储空间来换取数据处理速度的提升。这种技术在计算机体系结构的各个层面都有体现,从CPU内部的L1、L2、L3缓存,到操作系统层面的磁盘缓存,再到应用程序级别的数据缓存,形成了一个完整的多级缓存体系。 阅读详情

相关推荐

缓存技术实战[一文讲透!](Redis、Ecache等常用缓存原理介绍及实战)

缓存(Cache)是一种存储技术,用于临时存放从原始数据源(如硬盘、数据库或网络)获取的数据副本,目的是加快数据的访问速度,减少不必要的重复处理,进而提升系统整体的性能和响应效率。它是计算机科学中“空间换时间”策略的一个典型应用,即通过牺牲少量的存储空间来换取数据访问速度的显著提升。简而言之,缓存就是存储数据副本或计算结果的组件,以便后续可以更快地访问。Redis是我们平常开发中最常用到的缓存中间件了!

愿你有前程可奔赴,亦有青春可回顾 2669

产品中的7种缓存机制,你知道多少?

作者:流年 全文共 3359 字 4 图,阅读需要 8 分钟 ———— / BEGIN / ———— 缓存,在互联网产品中可以简单理解为: 第一次请求数据放到存储器中,下次显示该页面先把上次保存的数据显示出来,同时去请求数据,请求完成刷新显示新数据,并将其再缓存起来。 当今互联网应用(网站或App)的整体实现流程是: 用户的请求从界面

人人都是产品经理 5543

ehcache页面缓存技术

ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术

简谈常用缓存技术

对于一个访问量庞大的网站来说,缓存机制是很重要的提速和优化手段。 那么我们在开发一个网站的过程中,能用到的,需要注意的缓存机制都有哪些呢?本文将浅显层面做一些简单笔记。如果大家有不同意见,欢迎拍砖。 本文主要提到如下缓存技术:浏览器缓存、网关/代理服务器缓存、页面缓存、数据缓存、数据库缓存、反向代理缓存  浏览器缓存 浏览器缓存机制,主要就是HTTP协议定义的缓存机制(如 Expi

zhengwish的专栏 1万+

后台开发必备:每个程序员都应掌握的缓存技术

????目录1缓存策略2 缓存类型3缓存淘汰策略4 缓存常见问题5 总结本文介绍了后台开发中使用的缓存技术,如缓存策略、缓存类型,包括本地缓存和分布式缓存,还有缓存淘汰策略,以及缓存使用中的常见问题,如一致性问题、缓存雪崩、缓存穿透、缓存击穿。缓存(Cache)是一种存储技术,可以存储数据,以便快速获取数据。缓存最重要的是两个特性:存储、快速获取。缓存的本质:「用空间换时间」,用快速存储的介质保存数...

QcloudCommunity的博客 1577

深入解析缓存技术

本文探讨了缓存技术的应用,包括其基本原理、更新机制、数据过期策略以及缓存可能引起的问题和解决方案。首先介绍了缓存缓存原理,然后深入探讨了三种主要的缓存更新机制:Cache Aside模式、Read/Write Through模式和Write Behind Caching,以及其优缺点和适用场景。接着,文章讨论了数据过期策略,包括LRU、FIFO和LFU算法,并通过Go语言代码实现。最后,文章分析了缓存可能带来的不一致性、大key、缓存雪崩、缓存穿透和缓存击穿等问题,并提出了相应的解决方案。

tatasix的博客 1483

缓存(PageCache)和预读机制(readahead )

假设用户线程请求读取磁盘上文件 A 的 offset 为 0-3KB 范围内的数据,由于磁盘的基本读写单位为 page(4KB),于是操作系统至少会读 0-4KB 的内容,这恰好可以在一个 page 中装下,但是操作系统出于局部性原理,会选择将相邻磁盘块 offset [4KB,8KB)、[8KB,12KB) 以及 [12KB,16KB) 都加载到PageCache,于是额外在PageCache中申请了 3 个 page用于缓存

罗罗的1024 1452

前端常用缓存技术深度剖析

前端常用的缓存技术在提升性能、优化用户体验方面各有其独特的作用。浏览器缓存通过在用户本地存储资源减少网络请求;本地存储为前端应用提供持久化或会话相关的数据存储;应用缓存支持离线应用;CDN 缓存则在全球范围内加速资源分发。开发人员需要深入理解这些缓存技术的原理、适用场景和局限性,根据应用的特点合理选择和组合使用缓存技术,并制定有效的缓存更新策略,以充分发挥缓存的优势,同时避免因缓存问题导致的用户体验下降或数据不一致等问题。在不断发展的前端技术环境中,缓存技术的合理应用将持续是优化前端应用的关键环节之一。

你若盛开,清风自来 3688

PHP常用缓存技术

PHP中常用的缓存技术包括编译缓存和数据缓存两大类。编译缓存主要用于减少PHP代码的编译时间,提高执行效率;数据缓存则用于减少数据库的访问次数和计算量,提升性能。在实际应用中,可以根据项目的具体需求和性能要求来选择适合的缓存技术。同时,还需要注意缓存的粒度和有效期等设置,以确保缓存的有效性和一致性。

sheji888的专栏 1438

java比较常用的缓存技术_常用缓存技术

热数据缓存这是使用缓存最频繁最直接的方式,即我们把需要频繁访问DB的数据加载到内存里面,以提高响应速度。通常我们的做法是使用一个ConcuccrentHashMap来记录一天当中每个请求的次数,每天凌晨取出昨天访问最频繁的K个请求(K取多少个取决你的可用内存有多少),从DB中读取这些请求的返回结果放到一个ConcuccrentHashMap容器中,然后把所有请求计数清0,重新开始计数。LRU缓存热...

weixin_42161497的博客 2873

介绍缓存的基本概念和常用的缓存技术

摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页)1         概念1.1   缓存能解决的问题· 性能——将相应数据存储起来以避免数据的重复创建、处理和传输,可有效提高性能。比如将不改变的数据缓存起来,例如国家列表等,这样能明显提高web程序的反应速度;· 稳定性——同一个应用中,对同一数据、逻辑功能和用

li_yu_hai的专栏 4万+

PHP常用缓存技术的总结

1、全页面静态化缓存:将页面全部生成为HTML静态页面,用户访问时直接访问静态页面,不走PHP服务器的解析流程。此种方式在CMS系统中比较常见,如dedecms。 实现方法:输出缓存 ob_start()--打开“输出控制缓冲”; some code --要运行的代码; $content=ob_get_contents()--返回“输出缓冲区的内容”; some code --使用fil

ym_diver的博客 1万+

常用的缓存技术都有哪些

• 术语:浏览器缓存策略(Browser Caching Policy)、缓存大小(Cache Size)、缓存生命周期(Cache Lifetime)。• 术语:缓存代理(Cache Proxy)、缓存失效(Cache Invalidation)、缓存同步(Cache Synchronization)。• 缓存命中(Cache Hit)、缓存未命中(Cache Miss)、缓存过期(Cache Expiration)。• 浏览器内部使用的缓存,用于存储网页、图像、脚本等资源,以提高网页加载速度。

weixin_57763462的博客 1389

缓存的基本概念和常用的缓存技术

摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页)1         概念1.1   缓存能解决的问题· 性能——将相应数据存储起来以避免数据的重复创建、处理和传输,可有效提高性能。比如将不改变的数据缓存起来,例如国家列表等,这样能明显提高web程序的反应速度;· 稳定性——同一个应用中,对同一数据、逻辑功能和用...

杰哥一号号的博客 2万+

写出常用缓存技术

一、数据缓存   这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数 据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中, 以后同样的查询结果就直接从缓存表或文件中获得。   用的最广的例子看Discuz 的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时 先搜索缓存表。 举个常用的方法,多表关联的时候

superobser的博客 1714

前端常用的缓存技术

CDN缓存 CDN(Content DeliveryNetwork),即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率 具体是什么意思呢? 当我们使用CDN时,CDN会优先调度离我们最近的边缘服务器并检测是否有该请求的缓存数据,如果有则返回缓存数...

weixin_34252090的博客 2849

web后台开发常用的缓存技术

在WEB开发中用来应付高流量最有效的办法就是用缓存技术,能有效的提高服务器负载性能,用空间换取时间。1.缓存一般用来:11.存储频繁访问的数据1.2.临时存储耗时的计算结果1.3.内存缓存减少磁盘IO2.使用缓存的2个主要原因:2.1降低延迟:缓存离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,呈现速度更快,网站就显得更灵敏。2.2降低网络传输:副本被重复使用,大大降低了用户的带宽使用...

黑马程序员广州中心的专栏 466

java中常用的缓存流程、缓存分类、缓存问题

一、概念 缓存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存汇总查询数据,有则直接执行,不存在时从内存中获取。由于缓存的数据比内存快的多,所以缓存的作用就是帮助硬件更快的运行 二、目的 通过提高服务的性能从而提高应用的用户体验。 系统性能指标:响应时间、延迟时间、吞吐量、并发用户数量和资源利用率 吞吐量:系统在单位时间内处理的请求的数量 三、流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更...

焚琴煮鹤呀的博客 2705

PHP常用的缓存技术

转自:微点阅读 https://www.weidianyuedu.com 一、数据缓存 这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。 用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。 举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解..

ysds20211402的博客 447
上一篇: STM32高码率MP3播放器优化:从卡顿爆音到320kbps流畅运行的完整实战
下一篇: 2026技术面试备考:从八股文到项目实战的体系化指南
weixin_34032621
博客等级 码龄11年 5551粉丝 779原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值