zoukankan      html  css  js  c++  java
  • 与系统 性能相关的 常见十个瓶颈 说明

    在网上看到的一篇Blog,原文链接如下:

    http://highscalability.com/blog/2012/5/16/big-list-of-20-common-bottlenecks.html

    需要FQ才能打开这个链接,作为一个IT技术人员,FQ是必备技能。 在这篇Blog里列了一些常见的与性能相关的瓶颈,仅仅是列举出来,没有单独的进行说明,不过每个点都是值得研究的。

    具体的列表如下:

      

    一. Database:

    1.       Working size exceeds available RAM

    2.       Long & short running queries

    3.       Write-write conflicts

    4.       Large joins taking up memory

    二.Virtualisation:

    1.       Sharing a HDD, disk seek death

    2.       Network I/O fluctuations in thecloud

    .Programming:

    1.       Threads: deadlocks, heavyweightas compared to events, debugging, non-linear scalability, etc...

    2.       Event driven programming:callback complexity, how-to-store-state-in-function-calls, etc...

    3.       Lack of profiling, lack oftracing, lack of logging

    4.       One piece can't scale, SPOF,non horizontally scalable, etc...

    5.       Stateful apps

    6.       Bad design : The developerscreate an app which runs fine on their computer. The app goes into production,and runs fine, with a couple of users. Months/Years later, the applicationcan't run with thousands of users and needs to be totally re-architectured andrewritten.

    7.       Algorithm complexity

    8.       Dependent services like DNSlookups and whatever else you may block on.

    9.       Stack space

    .Disk:

    1.       Local disk access

    2.       Random disk I/O -> diskseeks

    3.       Disk fragmentation

    4.       SSDs performance drop once data written is greater than SSD size

    .OS:

    1.       Fsync flushing, linux buffercache filling up

    2.       TCP buffers too small

    3.       File descriptor limits

    4.       Power budget

    六.Caching:

    1.       Not using memcached (databasepummeling)

    2.       In HTTP: headers, etags, notgzipping, etc..

    3.       Not utilising the browser'scache enough

    4.       Byte code caches (e.g. PHP)

    5.       L1/L2 caches. This is a hugebottleneck. Keep important hot/data in L1/L2. This spans so much: snappy fornetwork I/O, column DBs run algorithms directly on compressed data, etc. Thenthere are techniques to not destroy your TLB. The most important idea is to havea firm grasp on computer architecture in terms of CPUs multi-core, L1/L2,shared L3, NUMA RAM, data transfer bandwidth/latency from DRAM to chip, DRAMcaches DiskPages, DirtyPages, TCP packets travel thruCPU<->DRAM<->NIC.

    .CPU:

    1.       CPU overload

    2.       Context switches -> too manythreads on a core, bad luck w/ the linux scheduler, too many system calls,etc...

    3.       IO waits -> all CPUs wait atthe same speed

    4.       CPU Caches: Caching data is afine grained process (In Java think volatile for instance), in order to find theright balance between having multiple instances with different values for dataand heavy synchronization to keep the cached data consistent.

    5.       Backplane throughput

    八.Network:

    1.       NIC maxed out, IRQ saturation,soft interrupts taking up 100% CPU

    2.       DNS lookups

    3.       Dropped packets

    4.       Unexpected routes with in thenetwork

    5.       Network disk access

    6.       Shared SANs

    7.       Server failure -> no answeranymore from the server

    九.Process:

    1.       Testing time

    2.       Development time

    3.       Team size

    4.       Budget

    5.       Code debt

    .Memory:

    1.       Out of memory -> killsprocess, go into swap & grind to a halt

    2.       Out of memory causing DiskThrashing (related to swap)

    3.       Memory library overhead

    4.       Memory fragmentation

    5.       In Java requires GC pauses

    6.       In C, malloc's start takingforever

    -------------------------------------------------------------------------------------------------------

    Skype: tianlesoftware

    QQ:      tianlesoftware@gmail.com

    Email:   tianlesoftware@gmail.com

    Blog:     http://www.tianlesoftware.com

    Weibo: http://weibo.com/tianlesoftware

    Twitter: http://twitter.com/tianlesoftware

    Facebook: http://www.facebook.com/tianlesoftware

    Linkedin: http://cn.linkedin.com/in/tianlesoftware

    -------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

    DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)  

    DBA 超级群:63306533(满);  DBA4 群:83829929   DBA5群: 142216823

    DBA6 群:158654907    DBA7 群:172855474   DBA总群:104207940

  • 相关阅读:
    springboot2.X动态修改log4j2日志级别
    iframe嵌套PMM2.0
    grafana配置告警
    prometheus+grafana配置流程
    kubernetes拉取私有镜像仓库的镜像
    Windows Server 2016离线安装.NET Framework 3.5
    Office批量授权(VL)版本和激活方法
    华为USG防火墙配置NAT映射回流解决内网通过公网映射访问内部服务器
    IRF配置
    CENTOS7安装各种桌面系统 CENTOS安装桌面图形化GUI GNOME/KDE/Cinnamon/MATE/Xfce
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609282.html
Copyright © 2011-2022 走看看