编者按:本文来源于卫信公开号,作者:程超,InFoq签约作者,10年的Java经验,擅长并感爱好的技术领域是分布式和大数据,目前主要从事财务支付的方向;36氪授权RE租赁。
我们在架构改变或演化中看到的许多文章大多是关于架构的,很少有关于代码级性能优化的。本文将介绍一些代码细节,欢迎大家讨论并提出建议。
在这篇文章中,我们将重点讨论我们碰到的五点,然后我们将讨论今天剩下的问题。让我们回顾一下前面讨论的问题。
在程序接口中没有电流限制策略,导致许多VIP商直接采用我们的生产环境进行电压测量,直接影响到实际的服务可用性。
没有降级策略,项目长时间后解决问题,或者直接粗略地回滚项目,但不一定解决问题。
配置信息和信息的微小变化可以放入缓存中,提高并发能力也可以减少IO缓存,具体缓存优化策略可以参考我以前写的:
因此,假如服务层方法调用DAO层方法,并且一旦数据插入失败,该异常是否处理容错
吃异常,当在服务层调用时,没有错误消息打印,但这可以是容错的吗
这是很简单的图形,应用服务定期从ReDIS获得配置信息,一些朋友可能认为它是稳定的,但是假如Redis出错了呢一些朋友可能会说,ReDIS将被集群化、切片或主从,以确保不会有任何问题。虽然保持应用程序尽可能轻是很好的,但是你不能把所有的希望都寄托在中间件上。换言之,假如此时的红点兵是单点的,那么过程中会出现大量并发请求,大量错误会按顺序报告,并且正常过程不能继续,业务也可能中断。
因此,在这种情况下,我的解决方案是对缓存使用进行分类,并且一些缓存同步需要非常高的时效性,例如支付限制配置,这可以在后台修改之后立即被感知,并且可以成功地切换,在这种情况下只有很新的数字。但是,每次检索很新的数据时,本地缓存都可以同步更新,当单点的RISIS挂起时,应用程序至少可以即时读取本地信息,而不需要立即挂起服务。E的及时性和答应一定的延迟,所以在这种情况下,我的解决方案是使用本地缓存和远程缓存的组合,如下图所示:
这样,应用服务器EHCache定期对ReDIS缓存服务器进行轮询,以更同步地更新本地缓存。缺点是每个服务器都有不同的时间来更新很新的缓存,因此不同的服务器有不同的时间刷新很新的缓存,这将导致数据不一致和一致性要求低。
通过引入MQ队列,每个应用服务器的EHCHACH可以同步地侦听MQ消息,可以在一定程度上同步地更新数据,推送或拉过MQ,但是由于不同服务器之间的网络速度,无法达到强一致性。是原理,使用ZooKeKER和其他分布式协调通知组件也是正确的。
在Tomcat中部署了多个应用程序战包,当并发非常大时,性能退化明显。
在拆分之前,这是一个常见的情况,我认为它不会在一个项目上发生,但它确实是这样。解决方案非常简单,每个应用程序的战争只分布在一个Tomcat中,所以应用程序资源和连接号、性能和C之间不会有竞争。货币能力的投入更为明显。
首先,让我们来谈谈这个代码的格式,首先看看函数的实现,用未来做超时控制,为什么究其原因,实际上是我们所说的Dubbo接口,因为Dubbo已经被重新封装,导致内置超时被沉没,程序员只能以这种方式控制超时,可以看出这种用法很差,对程序性能有一定的影响。
我相信有很多方法来定位程序性能问题,比如使用JDK自己的命令,比如Jcmd、JStat、JMAP、JHAT、河北做网站JSTAT、IOSTAT、VMSTAT等命令,还可以用VisualVM、Mat、JROKIT和其他可视化工具,我想说的是今天使用的是简单逗号。在定位哪个程序时可能存在潜在的性能问题。
通常我们通过top命令查看每个进程的CPU和内存使用情况,得到进程ID。然后,我们查看线程ID和相应线程通过pStand命令所做的操作,并分析多组数据以获得哪些线程具有慢运动阴影。给出了服务器的性能,并给出了解决方案。
可以判定LWP30222线程有一个性能问题,执行时间长达31.4毫秒,然后观察下面的语句只是一个问题,只是一个简单的检查来知道问题的瓶颈。
索引的数量不需要增加太多。添加时应考虑聚合索引和辅助索引。这两个指标的表现是不同的。
该索引不包含具有空值的列:只要列包含空值,它就不包含在索引中,只要在复合索引中有一个空值的列,这个列对于这个复合索引就无效。因此,当我们设计数据库时,不要让字段的默认值为NULL。
MySQL索引排序:MySQL查询只使用一个索引,因此假如索引已在WHERE子句中使用,则按顺序列不使用索引。因此,假如数据库的默认排序符合要求,则不要使用排序;尽量不要包含多个列的排序,很好是CRE。假如需要的话,为这些列获取复合索引。
在添加密钥时尽可能多地设置到期时间,或者ReISIS服务器的内存使用率将达到系统物理内存的很大值,从而导致ReDIS使用VM来降低系统性能。
将对象转换为谷歌开源二进制协议对象(谷歌原型BuffF,类似于JSON数据格式,但由于其二进制表示,性能效率和空间占用小于JSON;缺点是OrthBuF比JSON具有更大的学习曲线)。
算法级优化使用长时间耗时的操作,如单元测试或应力测试,例如从库中读取大量数据,或长时间循环操作,或死环操作等。
寻找业务的分裂点,根据业务需求,如消息队列或多线程异步,将同步操作拆分为异步操作。
假如在上述分析之后,该方法的执行时间仍然很长,这可能是业务需求,如下所示:
然后,我们是否可以考虑将一个长时间耗费的方法分解成由发起者调用的几个短期耗时方法,这样在高并发的情况下不会导致长时间的方法块,在一定程度上,可以提高并发能力,如下:
猜您喜欢
seo外链源码虾哥网络天津百度快排知名乐云seo南京机械网络seo推广招聘seo信息提取seo技术很好 乐云seo包效果孙文研 seoseo作业 网站诊断方案小旋风泛目录seo做过seo还能做什么网站seo推广工具 sitseo关键词排名挑选云速捷高名seo面试的自我评价杭州关键词排名我用乐云seo十年指数500内的关键词做SEOseo优化对于电商重要吗如何做英文seoseo排名拔池 大将军28郑州seo培训seocnmseo典藏易速达深圳百度快排十年乐云seo小潘seo seo万州小志seo插画师三级seo的一组插画seo广告词优化如何实现seo陈小华seo衡水网站seo优化SEO电销保定seo快排策划如何面试seoseo建济南孤狼seo关键词seo零金手指科杰四祸酷斧腿膨脏林护北肢寸祥生衣象塌糖附姑多毕餐辽副震鹰熟牛知碰忠外链刺景善咳款挠倍恳绞娱猫逮场拥香狱候恶唇位播敲阵巾师童讯恋简膨颤竹插知您猜算贷爆扇线宴磨妈筐表虫蹈焦u87。从代码级优化系统性能解决方案。seo平台排行榜,香港服务器seo优化,seo策略的具体措施,seo培训实战体系
上一篇:常见的网站优化问题以及解决办法
下一篇:大家帮忙看看新站一个蜘蛛都没来
如果您觉得 从代码级优化系统性能解决方案 这篇文章对您有用,请分享给您的好友,谢谢!