热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot电商秒杀项目优化知识点总结:springboot电商项目

本文主要介绍关于springboot,mysql,后端的知识点,对【SpringBoot电商秒杀项目优化知识点总结】和【springboot电商项目】有兴趣的朋友可以看下由【PSJ_14】投稿的技术

本文主要介绍关于spring boot,mysql,后端的知识点,对【SpringBoot电商秒杀项目优化知识点总结】和【springboot电商项目】有兴趣的朋友可以看下由【PSJ_14】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的SpringBoot项目相关技术问题。

springboot电商项目

文章目录 3-1 云端部署---系统构建3-2 云端部署---Java环境安装3-3 云端部署---数据库环境安装3-4 云端部署---数据库部署3-5 云端部署---打包上传3-6 云端部署---编写deploy脚本启动3-7 性能压测---jmeter工具简介(上)3-9 性能压测---发现并发容量问题(上)3-10 性能压测---发现并发容量问题(下)3-11 性能压测之定制化内嵌tomcat开发3-12 性能压测---容量问题优化方向


3-1 云端部署—系统构建

阿里云 centos7.4 (1核2G)

3-2 云端部署—Java环境安装

上传本地jdk文件

scp .\jdk-8u65-linux-x64.rpm root@*.*.*.*://tmp/

赋予可执行权限

chmod 777 jdk-8u65-linux-x64.rpm 

安装rpm文件 此时系统会自动配置环境变量

rpm -ivh jdk-8u65-linux-x64.rpm 

手动配置环境变量

vim ~/.bash_profile 

添加

JAVA_HOME=//usr/java/jdk1.8.0_65
PATH=$PATH:$JAVA_HOME/bin

刷新环境变量 否则需要重新登录服务器配置才能生效

source ~/.bash_profile 
3-3 云端部署—数据库环境安装

下载安装mysql

yum install mysql*

centos7中已经用mariadb server替代了mysql server,所以必须要安装mariadb server
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

yum install mariadb-server

启动mysql服务器

systemctl start mariadb.service

查看mysqld进程是否启动

systemctl start mariadb.service

通过3306端口查看mysqld是否启动

netstat -anp | grep 3306

重置mysql的root用户密码

mysqladmin -u root password root

尝试连接mysql

mysql -uroot -proot
3-4 云端部署—数据库部署

win查看mysql安装位置

show variables like "%char%";

备份mysql问sql文件

 ./mysqldump -uroot -proot --databases seckill > C:\Users\z1161\Desktop\seckill.sql

上传sql文件并回复数据库(管道操作)

mysql -uroot -proot < //tmp/seckill.sql
3-5 云端部署—打包上传

利用mvn clean package命令在项目根目录打jar包

    <plugins>
    //此插件不能打包依赖
      <plugin>
        <groupId>org.apache.maven.plugins
     groupId> <artifactId>maven-compiler-plugin
      artifactId> <configuration> <source>1.8
       source> <target>1.8
        target> 
         configuration> 
          plugin> //加入此插件后能打包依赖 <plugin> <groupId>org.springframework.boot
           groupId> <artifactId>spring-boot-maven-plugin
            artifactId> 
             plugin> 
              plugins> 

修改权限并尝试启动

mv //tmp/seckill-1.0-SNAPSHOT.jar  //var/www/seckill/seckill.jar
chmod -R 777 *
java -jar seckill.jar
3-6 云端部署—编写deploy脚本启动

外挂配置文件:application.properties 同名外挂配置文件的优先级高于内置配置文件

server.port=80

外挂配置文件的启动方式

java -jar seckill.jar --spring.config.addition-location=/var/www/seckill/application.properties 

编写deploy.sh启动脚本用于后台启动jar包
nohup命令表示console退出程序也不会退出 并将输出写到nohup.out文件
最大最小堆栈都设置为400m 并且指定200m以及最大为200m的新生代JVM

nohup java -Xms400m -Xmx400m -XX:NewSize=200m -XX:MaxNewSize=200m -jar seckill.jar --spring.config.addition-location=/var/www/seckill/application.properties

更改该目录下所有文件的执行权限

chmod -R 777 *

在后台启动应用程序

./deploy.sh &

查看输出

tail -200f nohup.out 
3-7 性能压测—jmeter工具简介(上)

线程组 Http请求 查案结果树 聚合报告

根据进程名查看进程号

ps -ef | grep java
root     30274     1  0 00:59 ?        00:00:16 java -Xms400m -Xmx400m -XX:NewSize=200m -XX:MaxNewSize=200m -jar seckill.jar --spring.config.addition-location=/var/www/seckill/application.properties

根据进程号查看端口号

netstat -anp | grep 30274
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      30274/java

修改hosts文件的DNS解析
win:

C:\Windows\System32\drivers\etc\hosts

linux:

//etc/hosts

jemeter要勾选keep alive 建立长连接

3-9 性能压测—发现并发容量问题(上)

支持高并发且快速返回的系统即为高性能系统 总并发数除以每个并发所耗的时间即TPS

TPS是每秒事务数(TransactionsPerSecond),也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
平均TPS:用聚合报告中Throughput表示

耗时的操作看这两个指标:load average: 0.11, 0.05, 0.05 %Cpu(s): 1.4 us, 1.7 sy,

根据进程名查看进程号

ps -ef | grep java
root     30274     1  0 00:59 ?        00:00:16 java -Xms400m -Xmx400m -XX:NewSize=200m -XX:MaxNewSize=200m -jar seckill.jar --spring.config.addition-location=/var/www/seckill/application.properties

查看该进程的线程数,此时显示的线程数为tomcat的线程数加上springboot的线程数之和

pstree -p 30274 | wc -l
3-10 性能压测—发现并发容量问题(下)

修改springboot内嵌的tomcat默认配置(spring-configuration-metadata.json 有三个此文件 选择超过8000行的) 以提高并发线程数
server.tomcat.accept-count:等待队列长度,默认100
server.tomcat.max-connections:最大可被连接数,默认10000
server.tomcat.max-threads:最大工作线程数,默认200
server.tomcat.min-spare-threads:最小工作线程数,默认10
默认配置下,连接超过10000后出现拒绝连接情况
默认配置下,触发的请求超过200+100后拒绝处理

对于4核8G的单机 最优配置为

server.tomcat.accept-count=1000
server.tomcat.max-cOnnections=10000
server.tomcat.max-threads=800
server.tomcat.min-spare-threads=100
3-11 性能压测之定制化内嵌tomcat开发

keepalive缺点:
1.一直连接但如果不使用则浪费资源
2.成为系统的后门被攻击

keepAliveTimeOut:多少毫秒后不响应的断开
keepalivemaxKeepAliveRequests:多少次请求后keepalive断开失效
使用WebServerFactoryCustomizer定制化内嵌tomcat配置:

@Component
public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
   
    @Override
    public void customize(ConfigurableWebServerFactory configurableWebServerFactory) {
   
        //使用对应工厂类提供给我们的接口定制化我们的tomcat connector
        ((TomcatServletWebServerFactory) configurableWebServerFactory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
   
            @Override
            public void customize(Connector connector) {
   
                Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
                //定制化keepalivetimeout 设置30秒内没有请求则服务器自动断开keepalive连接
                protocol.setKeepAliveTimeout(30000);
                //当客户端发送超过10000个请求则自动断开keepalive连接
                protocol.setMaxKeepAliveRequests(10000);
            }
        });
    }
}
3-12 性能压测—容量问题优化方向

MySql数据库QPS容量问题:尽量保证所有查询为主键查询和唯一索引查询
主键查询:千万级别数据= 1-10毫秒
唯一索引查询:千万级别数据=10-100毫秒
非唯一索引查询:千万级别数据=100-1000毫秒
无索引:百万条数据= 1000毫秒+

MySql数据库TPS容量问题:
非插入的更新删除操作∶同查询
插入操作:1w ~ 10w tps(依赖配置优化)

本文《SpringBoot电商秒杀项目优化知识点总结》版权归PSJ_14所有,引用SpringBoot电商秒杀项目优化知识点总结需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
author-avatar
mobiledu2502873617
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有