一、物理环境

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单服务器最佳配置。

最新文章

  1. 使用代理下载Unity AssetStore上资源的方法
  2. java selenium (二) 环境搭建方法一
  3. bootstrap-15
  4. maven 无法安装plugin的问题
  5. matlab(数组、矩阵)
  6. 机器学习基石的泛化理论及VC维部分整理(第五讲)
  7. 以管理员身份启动ClickOnce部署的应用程序
  8. IE6-BUG-CSS兼容详解
  9. js,this,constrct ,prototype
  10. 【Android Developers Training】 43. 序言:管理音频播放
  11. 精通libGDX游戏开发-RPG实战-开发游戏的基本前提
  12. codevs 1054 电梯
  13. Mysql 数据库日志与数据文件分开
  14. JEECG 开源平台全视频和文档
  15. day06数据类型----元组、字典、集合
  16. laravel中常用的获取路径的函数
  17. Bootstrap table的基本使用总结
  18. 20145317《网络对抗》Exp4 恶意代码分析
  19. 基于jQuery的Cookie操作插件--简单而又没有兼容性问题!
  20. Spring之IOC,DI,动态代理,反射

热门文章

  1. Django笔记&教程 5-3 综合使用示例
  2. 偷天换日,用JavaAgent欺骗你的JVM
  3. Python 随机数,数学
  4. [loj150]挑战多项式
  5. [hdu6601]Keen On Everything But Triangle
  6. List、ArrayList、迭代器、链表、Vector
  7. 关于&quot;丢失的牛&quot;这个题的教学反思
  8. 实战!spring Boot security+JWT 前后端分离架构认证登录!
  9. Codeforces Gym 101221G Metal Processing Plant(2-SAT)
  10. Codeforces Gym 101175F - Machine Works(CDQ 分治维护斜率优化)