• 系统性能


    1、性能相关数据:

    • 系统用户数:决定数据量,对处理速度有影响,可事先评估
    • 在线用户数:决定访问压力的主要数据,反映总体处理能力的指标
    • 思考时间:影响访问压力的重要因素
    • 响应时间:反映系统处理个别请求速度快慢的指标
    • 吞吐率:反映总体处理速度的指标
    • 并发数:反映总体处理能力的指标
    • 资源占用率:由访问压力决定,反映系统负荷程度的指标

    2、性能指标

    单一业务
    • 吞吐率:系统单位时间内可处理的业务量
    • 并发数:系统可同时处理的最大请求数
    • 响应时间:从用户发起请求到请求完成所花费的时间
    复合业务
    • 在线用户数:在一定时间区间内对系统产生了访问的用户数。对于后端存在多个
    接口或功能的系统,不方便用单一的吞吐率来表示系统的处理能力,因此可以间
    接的用前端在线用户数来表示,其中隐含了各个功能或接口被使用的比例。
    • 响应时间:从用户发起请求到请求完成所花费的时间

    3、分析工具- nmon

    nmon 工具可以为 Linux 性能专家提供监视和分析性能数据的功能,包括:
    • CPU 使用率
    • 内存使用情况
    • 磁盘 I/O 速度、传输和读/写比率
    • 文件系统中的可用空间
    • 网络 I/O 速度、传输和读/写比率
    • 消耗资源最多的进程

     4、中间件配置优化 - nginx

    • worker_processes 8;
    nginx进程数,建议按照cpu数目来指定,一般为它的倍数。
    • worker_rlimit_nofile 102400;
    这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开
    文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与
    ulimit -n的值保持一致。
    • use epoll;
    通信时采用Linux下最高效的I/O模型
    • worker_connections 102400;
    每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为
    worker_processes*worker_connections。
    • keepalive_timeout 60;
    keepalive超时时间。
    • HTTP压缩
    • 静态内容过期
    • FASTCGI缓存
    • PROXY缓存

    5、中间件配置优化 - tomcat

    • connectionTimeout
    网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
    • keepAliveTimeout
    长连接最大保持时间(毫秒)。此处为15秒。
    • maxKeepAliveRequests
    最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间)
    • acceptCount
    指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将
    不予处理,默认为10个。
    • enableLookups
    是否反查域名,取值为:true 或false。为了提高处理能力,应设置为false
    • maxSpareThreads
    最大空闲连接数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的socket线程The default value
    is 50.
    • maxThreads
    最多同时处理的连接数,Tomcat 使用线程来处理接收的每个请求。这个值表示Tomcat 可创建的最大的线
    程数。
    • minSpareThreads
    最小空闲线程数,Tomcat 初始化时创建的线程数.
    • minProcessors
    最小空闲连接线程数,用于提高系统处理性能,默认值为10。
    • maxProcessors
    最大连接线程数,即:并发处理的最大请求数,默认值为75

    6、中间件配置优化 - mysql

    • default-storage-engine=INNODB
    • max_connections=20000
    • query_cache_size=440M
    • table_cache=2028
    • tmp_table_size=512M
    • thread_cache_size=80
    • key_buffer_size=1024M
    • read_buffer_size=256K
    • read_rnd_buffer_size=2M
    • sort_buffer_size=256K
    • innodb_additional_mem_pool_size=3M
    • innodb_flush_log_at_trx_commit=1
    • innodb_log_buffer_size=1336K
    • innodb_buffer_pool_size=130M
    • innodb_log_file_size=26M
    • innodb_thread_concurrency=16

    7、前端响应时间优化 -启用HTTP压缩

    • 以Nginx配置为例
    • gzip on;
    该指令用于开启或关闭gzip模块(on/off)
    • gzip_min_length 1k;
    设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值
    是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。
    • gzip_buffers 4 16k;
    设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原
    始数据大小以16k为单位的4倍申请内存。
    • gzip_http_version 1.1;
    识别http的协议版本(1.0/1.1)
    • gzip_comp_level 2;
    gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)
    • gzip_types text/plain application/x-javascript text/css application/xml
    匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的。
    • gzip_vary on;
    和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避
    免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

  • 相关阅读:
    编程语言扮演的3个角色,它连接了机器、开发者以及团队!
    20行代码爬取王者荣耀全英雄皮肤!让你享受白嫖的快乐!
    3分钟教会你如何发布Qt程序!高级编程界面开发也是如此的简单!
    C 语言实现一个简单的 web 服务器!了解 Socket 通讯工作原理!
    log4j
    解决MySQL 一闪而过的情况
    subversion和客户端的应用
    Map集合
    代码块执行顺序。
    ArrayList-VS-LinkedList
  • 原文地址:https://www.cnblogs.com/mabiao008/p/12610035.html
Copyright © 2020-2023  润新知