码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【ACK秒级部署】20万用户在10秒处理所有请求每个用户每秒5次请求


    准备环境:MySQL、Redis、注册中心、RocketMQ、sentinel流控jar包部署、Jemter环境及脚本
    注意事项:白名单、安全组、端口、镜像容器、压测脚本
    压测场景:20万用户,在10秒处理完,每个用户每秒5次请求,共计一千万次请求,OPS是100万。

    首先将项目打成jar包,然后在同层目录下创建Dockerfile文件,执行构建镜像容器,然后运行镜像容器进行测试项目能否正常运行。
    创建Dockerfile:

    # 使用openjdk:8作为基础镜像
    FROM openjdk:8
    # 将app.jar文件拷贝到/tmp目录下
    COPY red-packet-rain-0.0.1.jar /tmp
    # 设置工作目录为/tmp
    WORKDIR /tmp
    # 运行命令,启动Java应用程序
    CMD java -jar red-packet-rain-0.0.1.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    构建镜像容器:

    docker build -t red-packet-rain-0.0.1.jar:1.0 .
    
    • 1

    运行镜像容器:

    docker run --name red-packet-rain -p 8097:8097 red-packet-rain-0.0.1.jar:1.0
    
    • 1

    在这里插入图片描述有红框标识出现说明正常启动了

    浏览器访问:http://139.224.1.121:8097/api/v3/test
    在这里插入图片描述
    jemter压测受限的因素有很多,如果是本地机器运行jemter进行压测,主要受限于带宽。云服务器压测主要受限于云盘。由于我本地用的是手机热点,带宽不够,所以压不到过万的请求,更别说千万级别的请求了,所以将压测服务弄到云服务器上。

    vim /etc/profile
    
    • 1

    将jdk和jemter添加到文件尾部:

    export JAVA_HOME=/opt/jdk1.8.0_291
    export JMETER_HOME=/opt/app/JMeter5.4.1/apache-jmeter-5.4.1
    export PATH=$JMETER_HOME/bin:$PATH
    export PATH=$JAVA_HOME/bin:$PATH
    
    • 1
    • 2
    • 3
    • 4

    使其生效:

    source /etc/profile
    
    • 1

    配置好相关的jemter压测文件,然后上传到云服务器上,执行以下命令

    jmeter -n -t /opt/app/JMeter5.4.1/apache-jmeter-5.4.1/testpain/1.jmx -l  redtest1.jtl
    
    • 1

    推送到阿里云仓库文档:
    https://cr.console.aliyun.com/repository/cn-shanghai/red_packet_rain/red_packet_rain/details
    在这里插入图片描述

    docker login --username=javaliaozhiwei registry.cn-shanghai.aliyuncs.com
    docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/red_packet_rain/red_packet_rain:[镜像版本号]
    docker push registry.cn-shanghai.aliyuncs.com/red_packet_rain/red_packet_rain:[镜像版本号]
    
    • 1
    • 2
    • 3

    找另一台机器拉取镜像测试是否可用:

    docker pull registry.cn-shanghai.aliyuncs.com/red_packet_rain/red_packet_rain:1.0
    
    • 1

    在这里插入图片描述

    复制镜像容器
    在这里插入图片描述
    搜索ACK创建集群
    文档与视频操作:https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/getting-started/getting-started-with-ack-using-kubectl?spm=a2c4g.11186623.0.0.72e11a99VUIajK

    在这里插入图片描述在这里插入图片描述创建后不可用
    在这里插入图片描述分别看诊断结果

    第一个问题是拉取镜像失败
    在这里插入图片描述在这里插入图片描述判断应该是权限认证没有配置,使用免密组件拉取容器镜像,文档地址:
    https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/use-the-aliyun-acr-credential-helper-component-to-pull-images-without-using-secrets?spm=a2c4g.11186623.0.0.8dc32dbfDVQbco

    第二个问题是Pod不满足调度约束无法被调度,在异常页面左边有一个节点池,点伸缩就可以扩容,伸缩是目标的节点数,不是伸缩多少台。2个节点只能有一个镜像容器,多了会提示资源不够,4个节点只能有3个镜像容器,多了也是一样提示资源不够,5个节点则是最多4个镜像容器,后面以此类推。
    在这里插入图片描述
    然后又提示Pod的Sandbox容器创建失败
    在这里插入图片描述
    容器网络FAQ文档地址:https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/faq-about-container-networks

    等待工单回复,后期继续更新

  • 相关阅读:
    Tmux 使用教程
    尚医通 (一) --------- 项目介绍
    Golang常用语法糖
    我与LBM的句号
    leetcode-827:最大人工岛
    QtCreator按顺序编译多个子项目
    基于R语言极值统计学及其在相关领域中的应用
    生命在于学习——MSF初体验(一)
    如何创建python虚拟环境
    设计模式—结构型模式之适配器模式
  • 原文地址:https://blog.csdn.net/java_wxid/article/details/133459478
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号