一、物理环境

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. Spring Boot中如何自定义starter?

    Spring Boot starter 我们知道Spring Boot大大简化了项目初始搭建以及开发过程,而这些都是通过Spring Boot提供的starter来完成的.品达通用权限系统就是基于Sp ...

  2. Django笔记&教程 3-3 模板常用语法

    Django 自学笔记兼学习教程第3章第3节--模板常用语法 点击查看教程总目录 本文主要参考:https://docs.djangoproject.com/en/2.2/ref/templates/ ...

  3. [loj3330]猜数游戏

    如果两个数$a_{x}$和$a_{y}$,$\exists 0<i,a_{x}^{i}\equiv a_{y}(mod\ p^{k})$,就建一条$x$到$y$的有向边,再对这张图强连通分量缩点 ...

  4. 深度揭秘Netty中的FastThreadLocal为什么比ThreadLocal效率更高?

    阅读这篇文章之前,建议先阅读和这篇文章关联的内容. 1. 详细剖析分布式微服务架构下网络通信的底层实现原理(图解) 2. (年薪60W的技巧)工作了5年,你真的理解Netty以及为什么要用吗?(深度干 ...

  5. 未能加载文件或程序集“Microsoft.CodeDom.Providers.DotNetCompilerPlatform

    "/"应用程序中的服务器错误. 未能加载文件或程序集"Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Versio ...

  6. 痞子衡嵌入式:深扒IAR启动函数流程之段初始化实现中可用的压缩选项

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR启动函数流程里段初始化实现中可用的压缩选项. 接着 <IAR启动函数流程之段初始化函数__iar_data_init3实现& ...

  7. 洛谷 P6783 - [Ynoi2008] rrusq(KDT+势能均摊+根号平衡)

    洛谷题面传送门 首先显然原问题严格强于区间数颜色,因此考虑将询问离线下来然后用某些根号级别复杂度的数据结构.按照数颜色题目的套路,我们肯定要对于每种颜色维护一个前驱 \(pre\),那么答案可写作 \ ...

  8. Atcoder Grand Contest 038 F - Two Permutations(集合划分模型+最小割)

    洛谷题面传送门 & Atcoder 题面传送门 好久前做的题了--今天偶然想起来要补个题解 首先考虑排列 \(A_i\) 要么等于 \(i\),要么等于 \(P_i\) 这个条件有什么用.我们 ...

  9. doxygen相关命令

    主要配置修改 整个程序配置分几个部分 Project related configuration options 项目相关,包括: 项目名 输出目录 输出语言 是否显示继承属性 是否对C.Java.F ...

  10. Python如何支持读入gz压缩或未压缩文件?

    目录 需求 示例代码 笨办法 Pythonic方法 需求 要写一个接口,同时支持压缩和未压缩文件读入 示例代码 笨办法 import os import gzip filename = sys.arg ...