Docker+JMeter+Nginx

基于JMeter5.1.1+Nginx1.12.2
JMeter发起压测  
Nginx作为文件服务器

一、目录结构:

Dockerfile文件:

FROM ubuntu:18.04
# 基础镜像

MAINTAINER yangjianliang <[email protected]>
# 作者

RUN sed -i [email protected]/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
# 设置apt源为阿里云源

RUN apt-get clean && \
    apt-get update && \
    apt-get upgrade -y
# 检查软件包并升级

RUN apt-get install -y \
    build-essential \
    libtool \
    libpcre3 \
    libpcre3-dev \
    zlib1g-dev \
    openssl \
    libssl-dev \
    make && \
    apt-get update && \
    ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    apt-get install -y \
    tzdata && \
    rm -rf /var/lib/apt/lists/*
# 安装依耐

ADD nginx-1.12.2.tar.gz /usr/local
RUN cd /usr/local/nginx-1.12.2 && \
    ./configure --with-http_ssl_module --with-http_gzip_static_module && \
    make && \
    make install
# 安装Nginx

ADD jdk-8u201-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_201
ENV JRE_HOME=/usr/local/java/jdk1.8.0_201/jre
ENV PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
# 安装Java

ADD apache-jmeter-5.1.1.tgz /usr/local/jmeter
ENV JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.1.1
ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}
ENV PATH=${JMETER_HOME}/bin:${PATH}
# 安装JMeter

COPY nginx-app.conf /usr/local/nginx/conf
# 复制nginx配置文件

RUN sed -i ‘$a sampleresult.default.encoding=UTF-8‘ /usr/local/jmeter/apache-jmeter-5.1.1/bin/jmeter.properties
RUN sed -i ‘159s/256/512/g‘ /usr/local/jmeter/apache-jmeter-5.1.1/bin/jmeter
# 修改JMeter配置文件
COPY baidu.jmx /home
# 复制JMeter脚本

EXPOSE 80
# 暴露80端口

CMD /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx-app.conf
# 启动nginx并加载配置文件

nginx-app.conf文件:

user  root;
worker_processes  auto;

#error_log  logs/error.log;
error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

access_log  logs/access.log  main;

sendfile        on;
    #tcp_nopush     on;

#keepalive_timeout  0;
    keepalive_timeout  65;

gzip  on;

server {
        listen       80;
        server_name  localhost;

charset utf-8,gbk;

#access_log  logs/host.access.log  main;

location / {
            root   /home;
            # 目录文件服务器根目录
            autoindex on;
            # 允许nginx在浏览器以文件夹形式访问
            autoindex_exact_size off;
            # 显示文件大小
            autoindex_localtime on;
            # 显示文件时间
        }

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

# deny access to .htaccess files, if Apache‘s document root
        # concurs with nginx‘s one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

# another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

#    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

# HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

#    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

#    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

#    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

daemon off;

二、打包:

docker build -t jmeter-nginx .

等待一会儿

三、运行:

docker run -it -p 80:80 jmeter-nginx:latest /bin/bash

# 启动容器暴露80端口并进入容器内部

jmeter -JN=10 -JT=5 -n -t /home/baidu.jmx -l /home/baidu.jtl -e -o /home/report

# 执行压测命令

jmeter -J线程数变量名=值1 -J持续时间变量名=值2 -n -t jmx脚本 -l jtl文件 -e -o 测试报告目录
传递参数的运行命令
大写的J
N为线程数
T为持续时间(单位为秒)

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx-app.conf

# 手动启动nginx

访问:

http://127.0.0.1/

第二次运行:

再次发起压测时,可修改线程数与持续时间,并修改jtl文件名与Dashboard Report测试报告文件名,jmx脚本不需要修改
jmeter -JN=20 -JT=10 -n -t /home/baidu.jmx -l /home/baidu_2.jtl -e -o /home/report_2

原文地址:https://www.cnblogs.com/yjlch1016/p/12219148.html

时间: 2024-08-09 00:22:44

Docker+JMeter+Nginx的相关文章

Centos7 下面安装docker 部署Nginx

实验 环境 Centos 7 操作系统 安装docker yum install docker -y 查看docker 是否安装成功 docker -v Docker version 1.12.6, build 3a094bd/1.12.6 启动docker systemctl start docker 部署Nginx 获取基础镜像 docker pull nginx:1.10.3 查看 镜像 1.直接启动容器 docker run -d -p 8080:80 nginx:1.10.3 解释:

Docker + redis + nginx + tomcat

Docker + redis + nginx + tomcat 环境 pc机 机器 192.168.1.242 系统 [[email protected] ~]# uname -a Linux hdp-gp-dk02 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]#  cat /etc/redhat-release Red

windows 7搭建基于docker的nginx, php运行环境

包含的软件: nginx php(可选php 5.*或php 7.*) phpredis扩展(php5.*安装小于2.2.8的版本 php7.*安装>=3.0的版本) 基础软件环境 Windows 7 Docker Toolbox(自带了VitrualBox虚拟机软件) 注意:因为Win10有Docker特别版,此环境只适用于Win7 安装步骤简要说明 安装好Docker Toolbox,VitrualBox后 关闭VitrualBox虚拟机default 设置虚拟机default的共享文件夹,

如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现.它可以让我们更加专注于应用的开发,而不是基础架构.Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置.容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里.在这个教程里我们将会使用 weave 快速并且简单

docker 部署 nginx+php+mysql

系统:centos7 使用root账户 开放80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 安装docker yum install docker -y 安装docker-compose yum install epel-release -y yum install -y python-pip pip install -U docker-compose 部署nginx+php+mysql 开启docker systemc

docker 部署nginx+weblogic集群

测试一段时间,再来报告 docker 部署nginx+weblogic集群

docker 安装nginx并挂载配置文件和www目录以及日志目录

---恢复内容开始--- 一 首先 docker pull nginx 二 docker run --name myNginx -d -p 80:80 -v e:/docker/nginx/www:/www -v e:/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v e:/docker/nginx/conf.d:/etc/nginx/conf.d nginx name后面是启动的容器名称,-p是将容器内的端口映射到本机端口,  -v 是分别将本机

docker之NGINX镜像构建

Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性:1.作为Web服务器.2.作为负载均衡服务器.3.作为邮件代理服务器.4.安装及配置简单.接下来我们介绍在docker构建nginx镜像:Docker镜像构建分为两种方式:一.手动构建二.Dockerfile(自动构建) 一.Docker镜像手动构建实例: 基于centos镜像进行构建nginx镜像 #下载镜像 [[email protected] ~]# docker pull centos [[email protec

docker 安装nginx

文章来源:https://www.cnblogs.com/hello-tl/p/9293568.html 1.拉取镜像 docker pull nginx:1.13.0 2.  /data/nginx1.13.0/nginx.conf/nginx.conf 配置文件 mkdir /data mkdir /data/nginx mkdir /data/nginx/nginx.conf vim /data/nginx/nginx.conf/nginx.conf user nginx; worker_