影响系统性能的几个缘由

要想发挥系统的一个性能,必须是要让系统发挥它的一个特别的优点,在实际中影响系统性能的缘由到底有什么缘由呢?这一点咱们仍是须要了解清楚的,下面咱们来看看到底有什么缘由会影响系统的性能?前端

影响系统性能的几个缘由_系统运维_系统性能_数据结构_课课家

  一、日志问题java

  性能问题居然是日志所带来的问题,对于大多数日志系统来讲,随着进程数量的增长,记录日志所须要的时间也会线性增长。在进程数量达到8个时,日志记录时间大约为0.15s,很是影响系统的响应速度。所以日志是一个比较重要的性能瓶颈,也是常常是被人忽视的重点。程序员

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

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

  二、函数设计问题缓存

  在保证代码的易读性的同时,而后是提升代码的性能可能会比较困难。服务器

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

  对于不少语言来讲,函数返回Iterable就比直接返回Array要好,而且还将不会是影响易读性。数据结构

  三、通讯同步的问题架构

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

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

  四、没有理解TCP的原理

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

  五、内存回收比较慢

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

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

  六、数据结构的选择

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

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

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

  实际上有多数的人是不肯意把软件运行的环境或者系统升级到最新版,由于这些升级极可能会影响到正在运行的软件或服务。若想但愿提升系统的性能,是能够先在测试环境中试一试。

  同时是应该采起持续集成的工做流程,须要去常常更新代码,写完整的测试,此外试试看是否有一些bug能够经过升级它所依赖的环境就获得解决。

  八、重复运行的代码致使的问题

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

  九、并行的缘由

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

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

  若是须要给算法加速,首先是要去考虑单线程的状况,而后是再考虑复杂的并行状况。

  十、数据编码问题

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

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

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

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

相关文章
相关标签/搜索