记一次单机Nginx调优,效果立竿见影
一、物理环境
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调优,效果立竿见影的更多相关文章
- nginx调优(二)
		
nginx调优(一) (1).Fastcgi调优 FastCGI全称快速通用网关接口(FastCommonGatewayInterface),可以认为FastCGI是静态服务和动态服务的一个接口.Fa ...
 - nginx调优配置
		
nginx调优配置 user www www; #工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. worker_processes 8; worker_cpu_affinity 0 ...
 - nginx调优(一)
		
(1).隐藏nginx版本号 隐藏版本号可以有效避免黑客根据nginx版本信息,查找对应漏洞进行攻击. 下载nginx源码包(http://nginx.org/en/download.html)并上传 ...
 - nginx调优buffer参数设置
		
内容来自 https://blog.tanteng.me/2016/03/nginx-buffer-params/.有空再详细了解 Nginx性能调优之buffer参数设置 打开Nginx的error ...
 - 记一次IDEA编译器调优
		
前言: 我们知道,IDEA是用Java写的,那么他肯定也存在虚拟机的调优的问题,那么今天我们就对它进行开刀. 下面是默认参数 位置在:C:\Program Files\JetBrains\Intell ...
 - 记一次uwsgi django nginx 调优
		
[uwsgi] project = fortune_cat uid = ubuntu gid = ubuntu path = fortune_cat base = /home/%(uid) chdir ...
 - nginx 调优
		
般来说nginx配置文件中对优化比较有作用的为以下几项:worker_processes 8;1 nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity 0 ...
 - Linux学习系列之Nginx调优实战
		
Nginx配置文件性能微调 全局的配置 user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofi ...
 - Nginx调优实战
		
Nginx配置文件性能微调 全局的配置 user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofi ...
 
随机推荐
- 1组-Alpha冲刺-2/6
			
一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15535649.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...
 - [loj6203]可持久化队列
			
对于每一个节点,我们只需要知道他上len次插入(len是这个队列的元素个数)时所插入的元素就可以了 那么只需要将所有插入建为一棵树,然后找len次祖先就可以了,这个用倍增维护即可 还有一种比较神奇的做 ...
 - 多线程02.继承Thread类
			
package chapter2; /** * 1.使用static虽然完成了当前的功能. * 但是static的生命周期比较长,需要在所有线程执行完成后才会结束. * 还有号没有按照顺序进行打印 * ...
 - Go语言核心36讲(Go语言实战与应用十五)--学习笔记
			
37 | strings包与字符串操作 Go 语言不但拥有可以独立代表 Unicode 字符的类型rune,而且还有可以对字符串值进行 Unicode 字符拆分的for语句. 除此之外,标准库中的un ...
 - git连接远程仓库
			
1. 连接远程仓库 1.1. 创建仓库 在连接远程仓库之前,得先要确定你有一个远程仓库,到GitHub官网搞一个账户. 点右上角的加号然后"New repository"输入一个仓 ...
 - python之元编程
			
一.什么是元编程 元编程是一种编写计算机程序的技术,这些程序可以将自己看作数据,因此你可以在运行时对它进行内省.生成和/或修改. Python在语言层面对函数.类等基本类型提供了内省及实时创建和修改的 ...
 - 查找 Search
			
如果值域小一点. 那么我们有一个很精妙的做法. 分块完维护数字\(cnt\),和一个\(bitset\)信息. 然而小不得. 那么我们考虑维护后缀\(nxt_i\),表示第\(i\)位后,最近的\(a ...
 - 洛谷 P3600 - 随机数生成器(期望 dp)
			
题面传送门 我竟然独立搞出了这道黑题!incredible! u1s1 这题是我做题时间跨度最大的题之一-- 首先讲下我四个月前想出来的 \(n^2\log n\) 的做法吧. 记 \(f(a)=\m ...
 - P7708「Wdsr-2.7」八云蓝自动机 Ⅰ
			
*X. P7708「Wdsr-2.7」八云蓝自动机 Ⅰ. 摘自 分治与根号数据结构学习笔记 第三部分 莫队 例题 X.. 一道莫队好题.私以为本题最有价值的地方在于对单点修改的转化以及对交换两个数的处 ...
 - Mysql in子查询中加limit报错
			
Mysql in子查询中加limit报错 select id from aa where id in ( select id from bb limit 10 ); 改写成 SELECT id FRO ...