第二章 云端部署

第二章 云端部署,第1张

第二章 云端部署 数据库部署
  • 启动服务器的数据库服务
systemctl start mariadb.service

  • miaosha 数据库表备份
/usr/local/mysql/bin/mysqldump -uroot -p283619 --databases miaosha > ~/Downloads/miaosha.sql

  • 然后将备份文件,上传到服务器中
  • 将文件在服务器中执行一遍,相当于导入表结构和表数据到服务器的数据库
mysql -uroot -p283619 < //tmp/miaosha.sql

打包上传
  • 使用 IDEA 自带的 maven 进行打包,生成 miaosha-1.0-SNAPSHOT.jar 文件

  • 注意要记得添加 Spring Boot maven 打包的 plugin,不然打包后运行失败

  • 上传 miaosha-1.0-SNAPSHOT.jar 文件到服务器中

  • 移动 miaosha-1.0-SNAPSHOT.jar 文件到我们自己新建的目录下,重命名为:miaosha.jar ,然后给当前目录授予读写和可执行权限

mkdir www // 新建一个www目录
pwd www // 查询当前目录,/var/www
mv /目录1 /目录2 // 移动目录1的文件到目录2下
chmod -R 777 * // 给当前目录授予读写和可执行权限
tail -f nohup.out // 查看运行日志
ps -ef | grep java // 查看当前运行的java进程(包含进程号)
netstat -anp | grep 1302 // 查看进程号为1302的端口号
netstat -lntp // 查看开放端口号
编写 deploy 脚本

编写deploy脚本,实现自动打包上传并java执行的 *** 作。

服务端 SpringBoot 配置文件 application.properties 里面的配置可能随着设备环境的不同而发生变化,每次直接修改源码又很复杂,可以采用外挂配置文件的方式。

  • 在项目目录下新建 vim application.properties 外挂配置文件,修改文件,指定服务器端口server.port=80
  • 执行 java -jar miaosha.jar --spring.config.addition-location=/var/www/miaosha/application.properties

  • 新建 deploy.sh 文件,编辑 nohup 指令,设置最大/最小堆栈为 400m,JVM新生代 200m,最大新生代 200m,指定额外配置文件
nohup java -Xms400m -Xmx400m -XX:NewSize=200m -XX:MaxNewSize=200m -jar miaosha.jar
--spring.config.addition-location=/var/www/miaosha/application.properties
  • 重新给当前目录授予读写和可执行权限
chmod -R 777 *
  • 后台方式启动应用程序 ./deploy.sh & 避免关闭控制台,应用程序关闭的风险。输出 nohup.out 文件

  • 前台实时查看 nohub.out 文件内容:
tail -f nohup.out
Jmeter 性能压测
  • 线程组
  • Http请求
  • 查看结果树
  • 聚合报告

具体步骤

  • 添加线程组

  • 创建HTTP请求

  • 添加对应的结果树

  • 添加聚合报告

组装 Http 请求,模拟压测

sudo vim //etc/hosts //本机电脑添加一个映射到服务器ip地址的域名
43.138.131.175 miaoshaserver //当客户端访问miaoshaserver,会自动在host文件里面查找到对应的ip地址

  • 压测1000个线程启动时间为10s 运行10次

优化系统 设置 tomcat 参数 线程数

首先打开 SpringBoot 内置的 tomcat 配置,在 spring-configuration-metadata.json 里面,有几个参数特别重要:

  • server.tomcat.accept-count :等待队列长度:默认是100
  • server.tomcat.max-connections:最大可被连接数,默认10000
  • server.tomcat.max-threads:最大工作线程数,默认200
  • server.tomcat.min-spare-threads:最小工作线程数,默认10
  • 默认配置下,连接超过10000后出现拒绝连接
  • 默认配置下,触发的请求线程超过200 + 100后拒绝处理
server.port=80
server.tomcat.accept-count=1000
server.tomcat.max-threads=800
server.tomcat.min-spare-threads=100
  • 设置以上参数后,我们的 *** 作系统可以有充足的时间进行反应,把这100个线程先用着,然后再慢慢开到800个线程,满了再丢到1000个等待队列里面,超过1800个线程后就拒绝处理,连接超过10000后就拒绝连接。
  • 结果展示:可以提高到 118 个线程数量了

  • 400 个并发情况下的压测

KeepAlive
  • KeepAliveTimeOut : 多少毫秒后若客户端不响应则断开对应的连接
  • MaxKeepAliveRequests : 多少次请求后连接失效
  • 使用 WebServerFactoryCustomizer 定制化内置 tomcat配置
//当Spring容器内没有TomcatEmbeddedServletContainerFactory这个bean时,
// 会把此bean加载到Spring中
@Component
public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        // 使用对应工厂类提供给我们的接口定制化我们的tomcat connector
        ((TomcatServletWebServerFactory) factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                Http11NioProtocol protocolo = (Http11NioProtocol) connector.getProtocolHandler();
                // 设置 keepalivetimeout 超过30秒没有请求则服务端自动断开keepalive连接
                protocolo.setSelectorTimeout(30000);
                // 当客户端发送超过10000个请求则自动断开keepalive连接
                protocolo.setMaxKeepAliveRequests(10000);
            }
        });
    }
}
单Web容量上限
  • 线程数量:对于4核CPU 8G内存的服务器来说,配置800~1000个线程是最好的,再多的话就会消耗在cpu调度上
  • 等待队列长度:一般为1000~2000,队列做缓冲池用,但也不能无限长,队列太长还消耗内存,而且出队入队也消耗cpu
MySQL 数据库QPS容量问题
  • 主键查询:千万级别数据 = 1-10毫秒
  • 唯一索引查询:千万级别数据 = 10-100毫秒
  • 非唯一索引查询:千万级别数据 = 100-1000毫秒
  • 无索引:百万条数据 = 1000毫秒 +
MySQL 数据库TPS容量问题
  • 非插入更新删除 *** 作:同查询
  • 插入 *** 作:1w~10w tps (依赖配置优化,后续)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/735820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存