ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

系统的水平扩展

2020-04-29 09:05:32  阅读:319  来源: 互联网

标签:tmp www seckill 扩展 系统 水平 server jar 线程


mark

mark

秒杀升级

一、云端部署

1、配置jdk

vim ~/.bash_profile
# -----------------
JAVA_HOME=//usr/java/jdk1.8.0_65
PATH=$PATH:$JAVA_HOME/bin
# -----------------
source ~/.bash_profile

2、安装MySQL

# mysql 数据库的安装 没使用
yum install mysql* -y
yum install mariadb-server -y
systemctl start mariadb.service
yum -y install MariaDB-server MariaDB-client
systemctl start mariadb
systemctl enable mariadb
mysqladmin -u root password root

3、数据库备份

scp C:\Users\888\Desktop\seckillbetter.sql root@8.129.160.65://tmp/
mysql -uroot -proot < //tmp/seckillbetter.sql

4、maven 打包上传到阿里云

mvn clean package
scp seckill-0.0.1-SNAPSHOT.jar root@8.129.160.65:/tmp/

5、创建一个目录存jar文件

mkdir /var/www/seckill
mv /tmp/seckill-0.0.1-SNAPSHOT.jar /var/www/seckll
chmod -R 777 *

6、用外挂配置文件

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

7、编写启动脚本

vim deploy.sh
nohup java -Xms400m -Xmx400m -XX:NewSize=200m -XX:MaxNewSize=200m -jar seckill-0.0.1-SNAPSHOT.jar --spring.config.addition-location=/var/www/seckill/application.properties 
chmod -R 777 *
./deploy.sh &

二、jmeter性能压测

1、需要的条件

  • 线程组
  • Http请求
  • 查看结果树
  • 聚合报告
# 查看该进程有多少线程
pstree -p 5240
# 查看多少数量
pstree -p 5240 | wc -l

2、服务器调优

# 四核八G properties
server.tomcat.accept-count=1000
server.tomcat.max-threads=800
server.tomcat.min-spare-threads=100
// config.java
@Component
public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {

    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        // 使用对应工厂定制化tomcat
        ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(connector -> {
            Http11NioProtocol protocolHandler = (Http11NioProtocol) connector.getProtocolHandler();
            // 定制化参数
            // 定制化keepalivetimeout,设置30秒没有请求则服务器自动断开 keepalive
            protocolHandler.setKeepAliveTimeout(30000);
            // 当客户端发送超过10000个请求则自动断开keepalive连接
            protocolHandler.setMaxKeepAliveRequests(1000);
        });
    }
}

线程数量:4核 cpu 8G 内存单进程调度线程数 800 - 1000 以上后即花费巨大的时间在 cpu 调度上

等待队列长度:队列做缓冲池用,但也不能无限长,消耗内存,出队入队也消耗 cpu

3、MySQL的QPS问题

  • 主键查询:千万级数据= 1 ~ 10ms
  • 唯一索引查询:千万级别数据 = 10 ~ 100ms
  • 非唯一索引查询:千万级别数据 = 100 ~ 1000ms
  • 无索引:百万条数据 = 1000毫秒 +

4、MySQL的TPS问题

  • 非插入更新删除操作:同查询
  • 插入操作:1w ~ 10w TPS (依赖配置优化)

标签:tmp,www,seckill,扩展,系统,水平,server,jar,线程
来源: https://www.cnblogs.com/lovestart/p/12799819.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有