转自:https://www.cnblogs.com/nulige/p/9369700.html

1.性能优化概述

在做性能优化前, 我们需要对如下进行考虑

  • 1.当前系统结构瓶颈

    • 观察指标
    • 压力测试
  • 2.了解业务模式
    • 接口业务类型
    • 系统层次化结构
  • 3.性能与安全
    • 性能好安全弱
    • 安全好性能低

2.压力测试工具

1.安装压力测试工具ab

[root@nginx-lua ~]# yum install httpd-tools -y

2.了解压测工具使用方式

[root@nginx-lua ~]# ab -n 200 -c 2 http://127.0.0.1/ //-n总的请求次数 //-c并发请求数 //-k是否开启长连接 

3.配置Nginx静态网站与tomcat动态网站环境

[root@nginx-lua conf.d]# cat jsp.conf
server {server_name localhost;listen 80;location / {root /soft/code;try_files $uri @java_page;index index.jsp index.html;}location @java_page{proxy_pass http://192.168.56.20:8080; } } //分别给Nginx准备静态网站 [root@nginx-lua ~]# cat /soft/code/bgx.html <h1> Ab Load </h1> //给Tomcat准备静态网站文件 [root@tomcat-node1-20 ROOT]# cat /soft/tomcat-8080/webapps/ROOT/bgx.html <h1> Ab Load </h1> 

4.使用ab工具进行压力测试

//进行压力测试
[root@Nginx conf.d]# ab -n2000 -c2 http://127.0.0.1/bgx.html ... Server Software: nginx/1.12.2 Server Hostname: 127.0.0.1 Server Port: 80 Document Path: /bgx.html Document Length: 19 bytes Concurrency Level: 200 # 总花费总时长 Time taken for tests: 1.013 seconds # 总请求数 Complete requests: 2000 # 请求失败数 Failed requests: 0 Write errors: 0 Total transferred: 510000 bytes HTML transferred: 38000 bytes # 每秒多少请求/s(总请求出/总共完成的时间) Requests per second: 9333.23 [#/sec] (mean) # 客户端访问服务端, 单个请求所需花费的时间 Time per request: 101.315 [ms] (mean) # 服务端处理请求的时间 Time per request: 0.507 [ms] (mean, across all concurrent requests) # 判断网络传输速率, 观察网络是否存在瓶颈 Transfer rate: 491.58 [Kbytes/sec] received 

5.将nginx下的bgx文件移走, 再次压测会由tomcat进行处理

Concurrency Level:      200
Time taken for tests: 1.028 seconds Complete requests: 2000 Failed requests: 0 Write errors: 0 Total transferred: 510000 bytes HTML transferred: 38000 bytes Requests per second: 1945.09 [#/sec] (mean) Time per request: 102.823 [ms] (mean) Time per request: 0.514 [ms] (mean, across all concurrent requests) Transfer rate: 484.37 [Kbytes/sec] received 

3.影响性能指标

影响性能方便整体关注

  • 1.网络

    • 网络的流量
    • 网络是否丢包
    • 这些会影响http的请求与调用
  • 2.系统
    • 硬件有没有磁盘损坏,磁盘速率
    • 系统负载、内存、系统稳定性
  • 3.服务
    • 连接优化、请求优化
    • 根据业务形态做对应的服务设置
  • 4.程序
    • 接口性能
    • 处理速度
    • 程序执行效率
  • 5.数据库

每个架构服务与服务之间都或多或少有一些关联, 我们需要将整个架构进行分层, 找到对应系统或服务的短板, 然后进行优化

4.系统性能优化

  • 文件句柄, Linux一切皆文件,文件句柄可以理解为就是一个索引

    • 文件句柄会随着我们进程的调用频繁增加
    • 系统默认对文件句柄有限制,不能让一个进程无限的调用
    • 需要限制每个进程和每个服务使用多大的文件句柄
    • 文件句柄是必须要调整的优化参数
  • 设置方式
    • 系统全局性修改
    • 用户局部性修改
    • 进程局部性修改

vim /etc/security/limits.conf //针对root用户 root soft nofile 65535 root hard nofile 65535 //所有用户, 全局 * soft nofile 25535 * hard nofile 25535 //对于Nginx进程 worker_rlimit_nofile 65535; //root用户 //soft提醒 //hard限制 //nofile文件数配置项 //65535最大大小

备注:可以使用ulimit -a 命令查看open files  65535 系统最大打开文件数的值。

5.Nginx性能优化

CPU亲和, 减少进程之间不断频繁迁移, 减少性能损耗

1.查看当前CPU物理状态

[root@nginx ~]# lscpu |grep "CPU(s)"
CPU(s):                24
On-line CPU(s) list:   0-23
NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18,20,22
NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19,21,23

//2颗物理cpu,没颗cpu12核心, 总共24核心 

2.将Nginx worker进程绑到不同的核心上

//启动多少worker进程, 官方建议和cpu核心一致, 第一种绑定组合方式
#worker_processes 24;
#worker_cpu_affinity 000000000001 000000000010 000000000100 000000001000 000000010000 000000100000 000001000000 000010000000 000100000000 001000000000 010000000000 10000000000;
//第二种方式
#worker_processes 2;
#worker_cpu_affinity 101010101010 010101010101;
//最佳方式绑定方式
worker_processes auto;
worker_cpu_affinity auto;

3.查看nginx worker进程绑定至对应cpu

ps -eo pid,args,psr|grep [n]ginx 

4.Nginx通用优化配置文件

[root@nginx ~]# cat nginx.conf
user nginx;
worker_processes auto;
worker_cpu_affinity auto;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;
#调整至1w以上,负荷较高建议2-3w以上
worker_rlimit_nofile 65535;
events {
    use epoll;
#限制每个进程能处理多少个连接请求,10240x16
    worker_connections 10240;
}
http {
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
# 统一使用utf-8字符集
    charset utf-8;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
# Core module
    sendfile            on;
# 静态资源服务器建议打开
    tcp_nopush          on;
# 动态资源服务建议打开,需要打开keepalived
    tcp_nodelay         on;
    keepalive_timeout   65;
# Gzip module
    gzip on;
    gzip_disable "MSIE [1-6]\.";
    gzip_http_version 1.1;
# Virtal Server
    include /etc/nginx/conf.d/*.conf;
}

转载于:https://www.cnblogs.com/wx170119/p/11431295.html

ab测试nginx Nginx性能优化相关推荐

  1. NGINX应用性能优化指南(第六部分):连接优化

    [编者的话]本文是"NGINX应用性能优化指南"系列文章的第六篇,主要介绍了如何从连接优化方面实现NGINX应用性能优化.\ 注:本文最初发布于MaxCDN博客,InfoQ中文站在 ...

  2. Apache的压力测试以及web性能优化的常用知识总结

    这篇文章主要介绍了Apache的压力测试以及web性能优化的常用知识总结,笔记由<构建高性能web站点>这本高人气书籍整理而来,需要的朋友可以参考下  什么是带宽? 误解:"数据 ...

  3. 从零开始的Nginx [ 8 ] --- nginx 的性能优化:ab接口压力测试工具,tomcat企业运维,WEB站点部署,项目上线

    文章目录 nginx 性能优化 1.当前系统结构瓶颈 2.了解业务模式 3.性能与安全 4.系统与nginx性能优化 1.文件句柄 2.设置方式 3.系统全局性修该和用户局部性修改 4.进程局部性修改 ...

  4. 11 个 Nginx 参数性能优化工作

    工作上,需要配置 Nginx,要投入生产使用,做了一点优化工作,加上以前也经常折腾 Nginx,故记下一些优化工作. 优化 Nginx 进程数量 配置参数如下: worker_processes 1; ...

  5. Nginx配置性能优化(转)

    大多数的Nginx安装指南告诉你如下基础知识--通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了.而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...

  6. Nginx配置性能优化的方法

    大多数的Nginx安装指南告诉你如下基础知识--通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了.而且,在大多数情况下,一个常规安装的Nginx对你的网站来说已经能 ...

  7. Nginx upstream性能优化

    1      目的 完成基于大报文和小报文场景的Nginx压测方案设计,其在长连接和短连接的最佳并发模型测试结果如下表: 大报文在短连接场景QPS在1.8K左右,在长连接场景QPS在2.1K左右,提升 ...

  8. c++ http服务器之Apache工具ab压力测试(nginx与brpc)

    系列服务器开发 文章目录 系列服务器开发 前言 一.ab是什么? 二.ab测试实例nginx 1.nginx环境准备与安装 2.ab测试nginx本身的性能 3.ab测试基于brpc的http服务器性 ...

  9. Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化......

    干货!文章有点长,建议先收藏 引言 一.性能怪兽-Nginx概念深入浅出 二.Nginx环境搭建 三.Nginx反向代理-负载均衡 四.Nginx动静分离 五.Nginx资源压缩 六.Nginx缓冲区 ...

  10. nginx 性能优化的概述及在CPU资源方面的处理

    nginx的性能优化的概述 软件层面的提升硬件的使用率 增大CPU的利用率 增大内存的利用率 增大磁盘IO利用率 增大网络带宽利用率 提升硬件规格 网卡:万兆网卡.例如10G.25G.40G等 磁盘: ...

最新文章

  1. tensorflow基础
  2. 直接将自身代码注入傀儡进程
  3. Redis学习总结(23)——Redis如何实现故障自动恢复?浅析哨兵的工作原理
  4. druid监控页面_Spring boot学习(四)Spring boot整合Druid
  5. mysql死锁 简单例子_写一个Mysql死锁的例子
  6. [置顶] Jquery学习总结(二) jquery选择器详解
  7. 项目管理九大知识体系(转)
  8. MySQL随机排序的正确姿势
  9. 用神经网络实现手写数字识别
  10. 推荐好轮子【Echarts数据可视化】图表插件 兼容ie6、7、8
  11. javascript特效大全
  12. 2020中青杯A题集成电路通道布线数学建模全过程论文及程序
  13. Java实现基于Cookie的单点登录看这篇文章就够了
  14. 阿里云ECS服务器退订
  15. 程序员鄙视链, 所有工程师都鄙视php工程师, 为什么
  16. 4个万兆光口+8个千兆combo光电复用口+16个千兆网口管理型万兆机架式工业级以太网交换机
  17. php 8bit 10bit 解码,求助:我想把10bit的MKV压制成8bitMP4
  18. 51单片机红外控制步进电机
  19. CES 2019 前夕 | 万字长文回顾智能驾驶进化史
  20. 用c语言编写英文词典软件下载,大家帮帮忙,谁帮忙用C语言链表编写一个英语查询词典!~...

热门文章

  1. 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码......
  2. 域名删除时间及whois状态说明
  3. shell与 .sh文件与 .bash文件
  4. OpenCV+python:图像二值化
  5. 什么叫计算机网络阻塞,计算机网络体系结构的阻塞控制是什么呢?
  6. java宠物医院_java宠物医院管理系统
  7. python3操作mysql教程_python3操作mysql教程
  8. 批量替换_批量替换图框
  9. mysql 数据表 时间自动_MySQL数据库时间设置自动添加时间和自动更新时间
  10. c语言cythe头文件,第5章 C语言序的基本结构.doc