关于性能问题的一些思考

问题: 网站卡顿了或者某个接口tps上不去了,怎么定位?

  1. 性能问题的出现大多伴随着某个资源的瓶颈,待考量资源一般包括cpu,memory,network, disk
  2. 另外, 软件一般分为io密集型和cpu密集型, 当然了,也存在部分cpu和io都密集的;io不仅仅包含disk ,也包含network
  3. 所以解决问题的第一步就是发现性能瓶颈,比如幸运的是linux下针对这几种资源都有比较好的工具。
    3.1 全局观测
    • nmon nmon可以比如方便的看到cpu,network,disk,memory是否出现瓶颈


      image.png

      3.2 专项检测

      • cpu: top
      • mem: ps
      • network:iftop
      • disk: iotop

      其中top可以看到哪些进程占用比较高的cpu,ps可以看到各个进程占用的实际内存(ps aux),iftop和iotop跟top比较类似,只不过监控的资源项从cpu分别换成了网络和磁盘

4.如何解决性能瓶颈
这里只简单的谈几个点

  • cpu出现了瓶颈时,要关注下是系统cpu高还是用户cpu高
  • 如果系统cpu高的话,可以用strace -c 来看下是哪些系统调用占用了cpu
  • 用cpu高的话,负责的开发往往知道瓶颈可能出现在哪里, 比如存在大量循环计算, 存在大量的序列化和反序列化,可以通过优化算法来处理,找不到瓶颈时可以考虑使用profile
  • disk 出现瓶颈,往往是因为大量的随机读写导致的, 这在关系型数据库中最为常见,可以考虑使用leveldb等顺序读写的kvdb解决部分性能场景
  • network 出现瓶颈, 可以考虑开启http 压缩传输或者换成rpc协议
  1. 最有意思的一点, 可能观察不到性能瓶颈,但是网站确实慢了,怎么办?
    这种情况往往需要具体情况具体分析了,而且其实也是出现了瓶颈,只不是相对不明显。
    这里举一个例子,我们的nginx上配置了upstream, upstream上是100个php-cgi进程, 24核的机器,只有3个核跑满了,还有大量的核空闲,但是有的请求却始终返回很慢。
    其实聪明的你一定会怀疑那3个跑满的核, 可是心里也会有疑惑,难道有那么多的空闲的cpu不用,请求非要往那3个跑满的核上扔吗?
    答案确实是这样的, nginx upstream默认的请求分配策略是round robin,即轮询,按请求的顺序,依次分给upstream server。 假如有101个请求,前3个特别消耗cpu,大概需要1分钟才跑完,后面98个请求只需要1ms就能执行完,那么因为RR策略,第101个请求运气就比较差,刚好被分配到第1个请求后面,需要等1分钟之后第一个请求执行完了之后再执行,给大家造成一个假像,这个请求很耗时。
    最终的解决办法很简单, 在nginx upstream的配置中, 加上least_conn选项, 让nginx选择连接数最少的那个upstream server去执行请求。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348