• 2017年总结及2018年计划


      时间的车轮已经滚过了2017,本来是计划年底12月份结束之前将过去一年的工作和学习总结下,无奈一直托更,看来拖延症还是没有改善;趁着2018年到来之时,月初留空,就将这件事情落实下。

      其实2017年大概就是折腾以下三件事情:

      一、以性能为相关的工作,这占用这一年的大部分时间,包括性能测试,性能分析和性能调优。

      1、性能测试:这没什么好说的,大都是重复的执行,先根据测试需求将测试场景设计好,然后重复执行,找到问题就需要记录,然后重新执行验证,挺枯燥的。

      2、性能分析:性能分析的关键在于数据的收集,没有数据收集何来分析呢,大数据分析也是这套路;数据收集又在于监控,针对不同的运行环境部署相应的监控配置;待数据收集完毕后,按预期的数据需求来分析数据,服务器的性能分析基本都是看CPU,内存,磁盘和IO,网络和IO等这些数据。大多数服务器又分为应用,中间件,数据库,让服务器专心干一种事情。

      CPU分析

      在观察CPU性能的时候,按照负载特征归纳的方法,可以检查如下清单:  

      * 整个系统范围内的CPU负载如何,CPU使用率如何,单个CPU的使用率呢?
      * CPU负载的并发程度如何?是单线程吗?有多少线程?
      * 哪个应用程序在使用CPU,使用了多少?
      * 哪个内核线程在使用CPU,使用了多少?
      * 中断的CPU用量有多少?
      * 用户空间和内核空间使用CPU的调用路径是什么样的?
      * 遇到了什么类型的停滞周期?

      这里列举了一些系统性能分析工具,调用路径和停滞周期的分析可以使用perf工具,dstat工具也比较常用,也可以使用DTrace等更灵活的工具。

      

    工具

    描述
    uptime 平均负载
    vmstat 包括系统范围的CPU平均负载
    top 监控每个进程/线程CPU用量
    pidstat 每个进程/线程CPU用量分解
    ps 进程状态
    perf CPU剖析和跟踪,性能计数器分析

    更强大的工具可以使用火焰图,火焰图可以帮助分析CPU的调用路径。

    内存分析

    内存问题检查清单:

    * 系统范围内的物理内存和虚拟内存使用率
    * 换页、交换、oom的情况
    * 内核和文件系统缓存的使用情况
    * 进程的内存用于何处
    * 进程为何分配内存
    * 内核为何分配内存
    * 哪些进程在持续地交换
    * 进程或者内存是否存在内存泄漏?

    内存的分析工具如下:

    工具 描述
    free 缓存容量统计信息
    vmstat 虚拟内存统计信息
    top 监视每个进程的内存使用情况
    ps 进程状态
    Dtrace 分配跟踪
     
    除了DTrace,所有的工具只能回答信息统计,进程的内存使用情况等等,至于是否发生内存泄漏等,只能通过分配跟踪。但是DTrace需要对内核函数有很深入的了解,通过D语言编写脚本完成跟踪。Perf也有一些诸如cache-miss、page-faults的事件用于跟踪,但是并不直观。
     
    磁盘和IO分析

    对于磁盘IO,可以列出如下等问题来帮助我们分析性能问题:

    * 每块磁盘的使用率是多少?
    * 每块磁盘上有多长等待队列?
    * 平均服务时间和等待时间时多少?
    * 是哪个应用程序或者用户正在使用磁盘?
    * 应用程序读写的方式是怎样的?
    * 为什么会发起磁盘IO,内核调用路径是什么样的?
    * 磁盘上的读写比是多少?
    * 随机IO还是顺序IO?

     Linux对磁盘的性能分析工具主要如下:

    工具 描述
    iostat 各种单个磁盘统计信息
    iotop、pidstat 按进程列出磁盘IO的使用情况
    perf、Dtrace 跟踪工具
    磁盘上是随机IO还是顺序IO,很多时候并没有很好的方式去判断,因为块设备回写磁盘的时候,随机IO可能已经被整理为顺序IO了。对于磁盘的分析同样可以使用perf跟踪事件或者DTrace设置探针。 
     
    网络和IO分析
     
    对于网络性能,可以列出一下问题来帮助参考分析:
    * 平均数据包的大小(RX、TX)是多少?
    * 协议是什么?TCP or UDP?
    活跃的TCP/UDP端口是多少?B/s、每秒连接数?
    *
     哪个进程在主动地使用网络?
     
    Linux对网络的性能分析工具主要如下:
    工具 描述
    netstat 网络栈和接口统计信息
    sar 统计信息历史
    ifconfig 接口配置
    perf、Dtrace TCP/IP栈跟踪:连接、数据包、丢包,延时
     
    以上内容参考《性能之巅:洞悉系统、企业与云计算》和服务器性能优化的正确姿势http://www.brendangregg.com,了解详细的内容也可以去阅读。
     
    3、性能调优:这一年的调优主要是数据库方向的调优,因为性能测试发现数据库是性能瓶颈的问题所在,引起性能瓶颈的原因是数据库服务的IO负载高和表索引;将磁盘从普通的硬盘换成SSD可以解决IO负载高的问题,表索引的问题需要将关键的SQL语句找出来,针对性优化。具体的优化步骤由于篇幅过大,这里不做详细解说,有时间另外开篇。
     
    关于性能调优的问题,可以看看《性能之巅:洞悉系统、企业与云计算》和《图解性能优化》这两本书,京东上都有售,价格加起来差不多200来块钱,不算太贵。
     
    二、学习Python接口测试和Django
     
    2016年底看到虫师在博客更新关于Pyhton接口测试方面,于是也跟着节奏学习;到3月份实体书《Web接口开发与自动化测试——基于Python语言》,主要还是学习Django接口开发和测试,然后也写了一个简单的博客系统,一直修修补补,到现在也没完工。
     
    三、学习Pyhton爬虫和多线程
     
    学习爬虫开始目的是为了网上爬点妹子下来,也是在网上发现这个网站比较有趣:http://cuiqingcai.com/,然后就是跟着玩,接着玩了大概3个月,从8月到11月,每天下班回去就研究爬虫写代码;主要是学习Requests库,Beautiful Soup,xpath语法,多线程和MongoDB。
     
    以上就是这一年折腾的事情了,对于2018年,计划是做这三件事,重新学习Java,架构和性能调优,数据库。
  • 相关阅读:
    log4j 配置详解
    log4j2单独的配置与使用&log4j2+slf4j的结合的配置与使用
    jdk时区相差8小时
    javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误解决办法
    SqlServer 统计用户量实例(按年,月,日分组)
    sqlserver with as 双向递归
    eclipse启动无响应,停留在Loading workbench状态
    JS制作闪动的图片
    查询数据库中表名和扩展属性
    sql 查询除某字段的其他字段的记录
  • 原文地址:https://www.cnblogs.com/Start12/p/8179632.html
Copyright © 2020-2023  润新知