一、物理环境

1.系统是Centos 8,系统配置 2核4G,8M带宽,一台很轻的应用服务器。

2.站点部署情况。但站点部署两个实例,占用两个端口,使用nginx 负载转发到这两个web站点。

 二、调优思想

通过这次调优总结发现,在带宽有限,服务器资源有限的情况下,最好的方法是 1.缩小数据包的大小 2.减少不必要的数据库IO。

具体方法如下:

三、调优具体操作

1.应用程序调优

1.1添加分页

1.2多多使用缓存,减少不必要的数据库IO和后台请求。

添加分页的效果还是很显著的,我的站点首页是一张数据大表,初始默认数据条数大概在260条左右。没加分页之前,并发很低,100个模拟用户,并发数23,响应时间大于3秒。

添加分页后,默认显示20条数据,提升明显,这样其实大大减少了首页请求的数据包大小。除了分页其他可以减少后台请求的策略都可以执行,比如使用客户端缓存localStorage等,

添加分页后模拟100次请求响应时间在 2.19s可以接受,并发数31,已经有很大提高了。但还是有优化的空间。

在应用程序调优上,分页,缓存等策略只是抛砖引玉,各位开发者可以根据自己站点的实际情况,去配置相关策略,提高服务器的资源利用率,避免资源浪费等。

2.nginx 调优

首先说重点,nginx 启用gzip 效果太明显了,简直是质的飞跃。启用gzip后 并发提高了10倍。

在nginx.conf 中加入配置

配置文件头部加入

worker_processes 4;#基于服务器核心数来,一般等于  核心数*2
worker_cpu_affinity 0001 0010 0100 1000;#我这里是2核cpu,开启4个进程 worker_cpu_affinity配置参数来充分利用多核cpu,cpu是任务处理,当计算最费时的资源的时候,cpu核使用上的越多,性能就越好。

配置文件末尾追加,gzip配置

    gzip on;      
#大于1k执行压缩,过小的文件压缩,浪费时间得不偿失
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
#压缩级别,1-10,数字越大压缩的越好,时间也越长
gzip_comp_level 2;
#进行压缩的文件类型
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
#跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary off;
#ie6 以下不启用
gzip_disable "MSIE [1-6]\.";

保存后重启nginx,再次测试,效果喜人。直接上图:

直接模拟800个用户登录,并发数来到了234,响应时间 < 2s;  并发数提升超过十倍,而且最大负载也远远提升。

效果是不是很惊人呢。

后续会继续学习这块,持续更新,探索nginx单服务器最佳配置。

记一次单机Nginx调优,效果立竿见影的更多相关文章

  1. nginx调优(二)

    nginx调优(一) (1).Fastcgi调优 FastCGI全称快速通用网关接口(FastCommonGatewayInterface),可以认为FastCGI是静态服务和动态服务的一个接口.Fa ...

  2. nginx调优配置

    nginx调优配置 user www www; #工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. worker_processes 8; worker_cpu_affinity 0 ...

  3. nginx调优(一)

    (1).隐藏nginx版本号 隐藏版本号可以有效避免黑客根据nginx版本信息,查找对应漏洞进行攻击. 下载nginx源码包(http://nginx.org/en/download.html)并上传 ...

  4. nginx调优buffer参数设置

    内容来自 https://blog.tanteng.me/2016/03/nginx-buffer-params/.有空再详细了解 Nginx性能调优之buffer参数设置 打开Nginx的error ...

  5. 记一次IDEA编译器调优

    前言: 我们知道,IDEA是用Java写的,那么他肯定也存在虚拟机的调优的问题,那么今天我们就对它进行开刀. 下面是默认参数 位置在:C:\Program Files\JetBrains\Intell ...

  6. 记一次uwsgi django nginx 调优

    [uwsgi] project = fortune_cat uid = ubuntu gid = ubuntu path = fortune_cat base = /home/%(uid) chdir ...

  7. nginx 调优

    般来说nginx配置文件中对优化比较有作用的为以下几项:worker_processes 8;1 nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity 0 ...

  8. Linux学习系列之Nginx调优实战

    Nginx配置文件性能微调 全局的配置 user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofi ...

  9. Nginx调优实战

    Nginx配置文件性能微调 全局的配置 user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofi ...

随机推荐

  1. 高德地图 JS API (jsp + miniui(子页面数据返回父页面并设值) + 单个点标记 + 点标记经纬度 + 回显 + 限制地图显示范围+搜索)

    -*-  父页面js function mapFocus(){ //console.log("-*-"); var longitude = mini.get("jd&qu ...

  2. Python 函数常用类型

    函数常用类型    无参数,无返回值    无参数,有返回值    有参数,无返回值    有参数,有返回值2.无参数,无返回值    无参数无返回值          def hello():    ...

  3. 【备忘】下载Oracle 8u202及之前的商用免付费版本JDK

    访问地址: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 虽然是商用免付费版本,下载仍需 ...

  4. 分布式事务(七)之Seata简介

    在前面的文章中,我们介绍了分布式事务的概念以及一些解决方案.fenSeata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata将为用户提供了AT.TCC.SAGA和 ...

  5. AgileConfig-1.5.5 发布 - 支持 JSON 编辑模式

    本次更新加入了2个新的编辑模式:JSON 编辑模式.TEXT 编辑模式.特别是 JSON 编辑模式是大家比较期待的一个功能.因为大家都习惯了 appsettings.json 的配置编辑模式,所以天生 ...

  6. System类的常用方法(currentTimeMillis与arraycopy)

    System类的常用方法 currentTimeMillis与arraycopy import java.util.Arrays; /* java.lang.System类中提供了大量的静态方法,可以 ...

  7. .NET Core基础篇之:依赖注入DependencyInjection

    依赖注入已经不是什么新鲜话题了,在.NET Framework时期就已经出现了各种依赖注入框架,比如:autofac.unity等.只是在.net core微软将它搬上了台面,不用再依赖第三方组件(那 ...

  8. nodejs中的fs模块中的方法

    nodejs中的fs模块 引入模块 const fs =require("fs") 检测文件是否存在fs.stat(path,callback) fs.stat("./n ...

  9. OI省选算法汇总及学习计划(转)

    1.1 基本数据结构 数组(√) 链表(√),双向链表(√) 队列(√),单调队列(√),双端队列(√) 栈(√),单调栈(√) 1.2 中级数据结构 堆(√) 并查集与带权并查集(√) hash 表 ...

  10. iptables_超解

    查询: -t选项,指定要操作的表,使用-L选项,查看-t选项对应的表的规则,-L选项的意思是,列出规则,所以,上述命令的含义为列出filter表的所有规则 显示出了3条链INPUT链.FORWARD链 ...