2019独角兽企业重金招聘Python工程师标准>>>

要想发挥系统的一个性能,必须是要让系统发挥它的一个特别的优势,在实际中影响系统性能的原因到底有什么原因呢?这一点我们还是需要了解清楚的,下面我们来看看到底有什么原因会影响系统的性能?

  1、日志问题

  性能问题竟然是日志所带来的问题,对于大多数日志系统来说,随着进程数量的增加,记录日志所需要的时间也会线性增加。在进程数量达到8个时,日志记录时间大约为0.15s,非常影响系统的响应速度。因此日志是一个比较重要的性能瓶颈,也是经常是被人忽视的重点。

  我们可以使用异步logger来去解决这个问题,同时小心设计logger所记录数据的结构,以便进行后续的读取和处理。

  除此之外,logger重复记录同一个错误是非常浪费性能的,我们可以将它设置为只记录第一次错误,最后是可以设置一个计数器来去记录错误发生的次数,这个方法也算是比较实用的。

  2、函数设计问题

  在保证代码的易读性的同时,然后是提高代码的性能可能会比较困难。

  实际上有很多技巧可以在避免一些常见性能问题的同时,不会过多牺牲代码的可读性。例如,用C++语言写函数参数时,可以考虑使用引用或指针类型,这样可以避免在函数内生成临时的数据结构,并且是不用返回数据。

  对于很多语言来说,函数返回Iterable就比直接返回Array要好,并且还将不会是影响易读性。

  3、通信同步的问题

  有做过网页前端的朋友将会有一定的经验,当浏览器访问网页时,速度可能会很慢,而再好再贵的服务器也解决不了这个问题,因为有些用户还是有可能用2G的手机网络来访问你的网站。

  还是有办法可以尽量让网页加载速度快一点。比如优化图片的大小,让不同分辨率的屏幕加载不同大小的图片,优化脚本加载顺序,以及尽量采用异步加载等实用的方法技巧。

  4、没有理解TCP的原理

  如果是不理解TCP的原理就开始考虑微服务架构,在某些情况下,若是遇到ACK延时可能导致每秒只能传输2-5个包。那么造成这个现象的原因是,TCP中的Nagle和TCP延时确认两种算法有时会造成进程死锁,并且是会影响微服务间的一个通讯。

  5、内存回收比较慢

  这个问题它指是自动内存回收导致的问题。

  使用自动内存回收的语言或者工具时,一次性分配过多的内存会增加内存回收的时间,这也将会是导致系统速度变慢。

  6、数据结构的选择

  如果你是把超过1GB的数据存在一个数据结构里,就需要小心内存的读取速度了。这对于一个超过2GB的字典,java的HashMap比.NET的字典慢10倍以上。在别的一些情况下,Java可能也比.NET快。

  当在处理特别占有内存的数据时,在选择数据结构上需要进行仔细的一个斟酌,同时的话不要太依赖系统自带的数据结构,这一点我们是需要了解清楚的。

  7、环境没有升级到最新版的问题

  实际上有多数的人是不愿意把软件运行的环境或者系统升级到最新版,因为这些升级很可能会影响到正在运行的软件或服务。若想希望提高系统的性能,是可以先在测试环境中试一试。

  同时是应该采取持续集成的工作流程,需要去经常更新代码,写完整的测试,此外试试看是否有一些bug可以通过升级它所依赖的环境就得到解决。

  8、重复运行的代码导致的问题

  这是一个常见的问题,要了解清楚代码可以运行,和可以有效率地运行是两回事。一段代码可能被重复调用了很多次,在表面上看起来却没有问题。比如每次需要一个文件就从磁盘读取,当你用过之后并不缓存起来,这也将会是导致接下来访问这个文件都是会变得很慢。

  9、并行的原因

  我们知道并行任务的通信和同步需要系统开销,并且这些通信和同步本身并不一定是并行的。根据阿姆德尔定律(AmdahlLaw),如果5%的系统活动需要串行,不管是使用多少个处理器,系统最多也只能加速20倍。而通用扩展性定律(USL)则指出,在处理器达到一定数量后,并行系统的通讯开销会导致性能下降。

  在建立并行系统时,尽量避免引入共享可变的全局数据,一旦出现问题,几乎是不可能知道是哪里的代码有问题,建议是使用不共享数据的方式构建并行系统,又或者是严格控制写入数据的场景。

  如果需要给算法加速,首先是要去考虑单线程的情况,然后是再考虑复杂的并行情况。

  10、数据编码问题

  有很多的程序员是喜欢用JSON,XML,或Base64等编码格式来传送数据,因为这样数据更具有可读性,在debug时就非常的方便了。

  但系统间的交互是不需要可读性的,将二进制的数据转换成文本再转换成二进制不仅消耗CPU,还消耗网络带宽。

  实际上你可以用Wireshark来debug服务器通信,又或者是使用ProtoBuffer,Thrift等工具库来优化通信的过程。

  总结:导致系统性能变慢的原因还算是有比较多的原因的,在实际的使用中可以是根据出现的问题,适当的去采取有效的措施方法来提升系统性能,这是在系统运维中要掌握的基本技巧。

转载于:https://my.oschina.net/u/3197358/blog/1329961

影响系统性能的几个原因相关推荐

  1. 浅析:18个影响网站流量下降的原因!

    网站流量一直以来是一个动态指标,每天都会有一定的涨幅,这是一个正常现象,但有的时候,网站流量会莫名其妙的开始持续下降,而从SEO人员的角度,总是感觉自身什么也没操作,就出现这种情况.   由于站点流量 ...

  2. 影响PCB电路板焊接质量的原因有哪些?

    焊接实际上是一个化学处理过程.PCB电路板在焊接工艺上出现问题,会导致焊接缺陷.焊接质量下降,从而影响电路板的合格率.那么,影响PCB电路板焊接质量的原因有哪些呢? 1.PCB的设计影响焊接质量 PC ...

  3. 计算机名影响网络,影响电脑网速的原因有哪些

    操作系统垃圾文件过多.意程序破坏.IE插件过多.网络设备自身问题.过多的防火墙.网线问题及网线水晶头接法错误都有可能引起网速变慢,下面小编就这些问题来说一说最影响网速的几大原因分析及解决方法,希望对你 ...

  4. 影响鸡蛋壳暗的原因 鸡吃啥药增蛋毛色光亮

    影响鸡蛋壳暗的原因 鸡吃啥药增蛋毛色光亮 影响蛋壳颜色的遗传因素.对一只母鸡来说,蛋壳颜色深浅是比较固定的.天然食物或商品饲料中获得的色素,并不能被沉积到蛋壳中.达龙速补维,补充维生素,增蛋,使毛色光 ...

  5. java事务过大影响系统性能吗_Java编程性能优化-影响性能的因素你都知道吗?

    1.总是听说系统性能咋样,那我们为啥要性能调优?有啥意思? 1.1肺腑之言,唠叨几句感慨 以前写代码,一般都是跟着感觉走,业务实现出来就行了,至少客户端可以使用就可以.不管他三七二十一,总之我搞完了. ...

  6. u盘容量影响计算机运行速度,影响U盘运行速度的原因有哪些

    U盘已经成为大家重要的办公用品,经常用来复制拷贝文件,而U盘的运行速度,不知道大家有没有在意呢?U盘速度慢会直接影响着用户的操作效率,那么造成U盘速度不同的原因有哪些? 原因一:Flash芯片速度差别 ...

  7. 事务处理操作(COMMIT,ROLLBACK)。复制表。更新操作UPDATE实际工作中一般都会有WHERE子句,否则更新全表会影响系统性能引发死机。...

    更新操作时两个会话(session)同时操作同一条记录时如果没有事务处理操作(COMMIT,ROLLBACK)则会导致死锁. 复制表:此方法Oracle特有 转载于:https://www.cnblo ...

  8. 应用系统性能测试六大步

    性能测试是为了保证产品发布后其性能能够满足用户的需求,本文结合具体案例介绍了应用系统性能测试的六大步骤. 在本文介绍的这个案例中,被测应用系统是一家公司的客户信息系统,它主要用来录入.修改以及查询全球 ...

  9. 浅析PCIe MPS对系统性能和稳定性的影响

    在pcie协议中,关于TLP数据传输过程,有两个比较重要的参数: 第一个: Max Payload Size, 简称MPS.这参数决定了TLP传输过程中大小.在接收端,需要使用同样的MPS大小,在发送 ...

最新文章

  1. MinkowskiEngine基准测试
  2. 腾讯服务器“上天”、大疆云台会飞、淘宝被掰弯了……这是昨天各大科技公司的最新产品...
  3. 低功耗wifi soc_36氪首发研发低功耗蓝牙芯片,联睿微完成数千万元A+轮融资
  4. printf and echo
  5. 将10000H-1000FH这段空间当做栈,初始状态栈是空的,设置AX=001AH,BX=001BH,利用栈,交换AX和BX的数据
  6. 微信公众帐号开发教程第7篇-文本消息中换行符的使用
  7. 想通过C++寻找后端开发工作如何提升自己?
  8. 怎么把VC++的注释语句调成其他颜色,只调注释语句
  9. Q141:PBRT-V3,交点处各种微分的求解(球面,3.2章节)
  10. TIA安装GSD文件
  11. 海思HI35xx平台软件开发快速入门之H265解码实例
  12. 通信原理---FPGA---HDB3码编码
  13. python中开根号函数_用二分法定义平方根函数(Bisection method Square Root Python)
  14. 下行控制信息 - 下行DCI
  15. 京东java前后端联调_前端工程化、组件化实践JDM分享
  16. 血氧仪方案-血氧仪的功能及应用
  17. 设计模式学习笔记(C++实现)(七)--适配器模式
  18. php 获取文件夹下面的文件列表和文件夹列表
  19. C#调用DLL的几种方法
  20. 如何实现业务+项目一体化管理?

热门文章

  1. 考勤排班_如何设置钉钉做2休1等考勤?
  2. python断点调试不起作用flask_关于python的flask框架下的调试
  3. 设计模式之单例模式学习笔记
  4. 【iOS数据持久化】数据库(SQLite.swift)和FMDB
  5. 【UIKit】UIView基础学习
  6. 大连理工大学计算机原理实验交通灯,大连理工大学计算机原理第四次实验.docx...
  7. ZBrush关于遮罩的一些操作
  8. 【python】vscode python环境配置
  9. 本土化App名稱和icon
  10. DVWA1.9平台XSS小结