เชนเซเชฒเซ เชฆเชฐเซเช!
เช เชฒเซเชเชฎเชพเช เชนเซเช เชเซเชจเชเชฟเชจเซเชธเชจเซ เชเชเซเชฎเซเชถเชจ เชคเชฐเซเชเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ OpenShift เชฎเชพเช JMeter เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพเชจเซ เชเช เชฐเซเชค เชถเซเชฐ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช. เชชเซเชฐเชฅเชฎ เชเชชเชฃเซ เชฌเชงเชพ เชเชฐเซเชฐเซ เชชเชเชฒเชพเชเช เชเชฐเซเชถเซเช (เชฌเชจเชพเชตเชตเซ ImageStreams
, BuildConfig
, Job
เชตเชเซเชฐเซ) เชฎเซเชจเซเชฏเซเช
เชฒ เชฎเซเชกเชฎเชพเช. เชคเซ เชชเชเซ, เชเชพเชฒเซ เชเซเชจเชเชฟเชจเซเชธ เชชเชพเชเชชเชฒเชพเชเชจ เชฒเชเซเช.
เชชเซเชฐเชพเชฐเชเชญเชฟเช เชฌเชฟเชเชฆเซ เชคเชฐเซเชเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชนเซเชตเซเช เชเซเชเช:
- OpenShift (v3.11) เชเซเชฒเชธเซเชเชฐ เชเชฒเชพเชตเซ เชฐเชนเซเชฏเซเช เชเซ
- OpenShift เชฎเชพเช เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชฐเซเชชเชฐเซเชเชพเชเชเชฟเชค เชเชณเชเชชเชคเซเชฐเซ เชธเชพเชฅเซ เชเซเชจเชเชฟเชจเซเชธ เชธเชฐเซเชตเชฐ
- เชซเชพเชเชฒ
apache-jmeter-5.2.tgz
เชชเชฐเซเชเซเชทเชฃเซ เชคเชฐเซเชเซ เชคเซ เชธเชฐเชณ เชนเชถเซ HTTP Request
เชชเชฐ ya.ru
เชเช เชชเซเชฐเชตเชพเชนเชฎเชพเช.
OpenShift เชฎเชพเช เชชเซเชฐเซเชเซเชเซเช เชฌเชจเชพเชตเชตเซ
เชเชพเชฒเซ เชเช เชจเชตเซเช เชตเชพเชคเชพเชตเชฐเชฃ เชฌเชจเชพเชตเซเชจเซ เชถเชฐเซเชเชค เชเชฐเซเช. เชเชพเชฒเซ เชฌเชจเชพเชตเซเช perftest
เชเช เชเซเชฎ เชฆเซเชตเชพเชฐเชพ เชเซเชฐเชพเชฏเซเชฒเซ:
$ oc new-project perftest --display-name="Performance Tests" --description="Performance Tests - JMeter"
เช
เชฎเซ เชจเชตเชพ เชฌเชจเชพเชตเซเชฒเชพ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช เชเชชเชฎเซเชณเซ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชฅเชเชถเซเช perftest
, เชเชพเชฒเซ เชคเชชเชพเชธเซเช เชเซ เช เชเชตเซเช เชเซ:
$ oc project
Using project "perftest" on server "https://127.0.0.1:8443".
เชธเชเชเซเชฐเชนเชจเซ เชฐเชเชจเชพ
เชเซเชธเซเช เชฐเชฟเชชเซเชฐเซเชเซเชธ เชตเซเชฌ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ เช
เชจเซ jmeter-meter
'เชเชเซเชฏเชพ - /jmeter/reports
.
เชนเชตเซ เชธเซเชเซเชฐเซเช เชฌเชจเชพเชตเชตเซเช เชตเชงเซ เชธเชพเชฐเซเช เชเซ, เชเชพเชฐเชฃ เชเซ เชชเซเชเชกเซ เชคเซเชฎเชจเซ เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒเชพ เชนเชถเซ jmeter-web
ะธ jmeter-master
.
เชคเชฎเชจเซ เช
เชงเชฟเชเซเชค เชฆเชธเซเชคเชพเชตเซเชเซเชฎเชพเช เชธเซเชเซเชฐเซเช เชชเชฐ เชตเชงเซ เชตเชฟเชเชคเชตเชพเชฐ เชฎเชพเชนเชฟเชคเซ เชฎเชณเชถเซ
เชฎเชพเชเซ yaml เชซเชพเชเชฒเซ เชฌเชจเชพเชตเซเช PV
ะธ PVC
.
pv.yaml
$ tee pv.yaml<<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
name: jmeter-reports
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
glusterfs:
endpoints: glusterfs-cluster
path: /jmeter/reports
readOnly: false
persistentVolumeReclaimPolicy: Retain
EOF
pvc.yaml
$ tee pvc.yaml<<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jmeter-reports
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
EOF
เชเชพเชฒเซ เชฌเชจเชพเชตเซเช PV
ะธ PVC
เชเชชเชจเชถเชฟเชซเซเช เชฆเซเชตเชพเชฐเชพ เชเซเชฐเชพเชฏเซเชฒเซเช:
$ oc create -f pv.yaml -n perftest
$ oc create -f pvc.yaml -n perftest
เชฎเชพเชเซ เชธเซเชฅเชฟเชคเชฟ เชคเชชเชพเชธเซ เชฐเชนเซเชฏเซเช เชเซ PVC
:
$ oc get pvc -n perftest
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jmeter-reports Bound pvc-b0e5f152-db4b-11ea-a497-566f75280024 10Gi RWX glusterfs-storage 8m
GUI เชฎเชพเช เชคเซ เชเซเชตเซเช เชฆเซเชเชพเชถเซ เชคเซ เช เชนเซเช เชเซ:
JMeter เชฌเซเช เชเชฎเซเช เชฌเชจเชพเชตเชตเซ
เชเชพเชฒเซ เชฌเชจเชพเชตเชตเชพ เชคเชฐเชซ เชเชเชณ เชตเชงเซเช ImageStream
ะธ BuildConfig
.
เชคเชฎเซ เชฆเชธเซเชคเชพเชตเซเชเซเชฎเชพเช เชคเชฎเชพเชฎ เชเชฐเซเชฐเซ เชฎเชพเชนเชฟเชคเซ เชฎเซเชณเชตเซ เชถเชเซ เชเซ -
เชเชฎเซเช เชฌเชฟเชฒเซเชก เชตเซเชฏเซเชนเชฐเชเชจเชพ เชเซ Docker
เชธเซเชฅเชพเชจเชฟเช เชธเซเชคเซเชฐเซเชคเชฎเชพเชเชฅเซ.
เชเชพเชฒเซ เชฌเซเช เชเชฎเซเช เชฌเชจเชพเชตเซเช jmeter-base
, เชเซเชจเซ เชเชงเชพเชฐ เชนเชถเซ jmeter-master
.
เชกเซเชเชฐเชซเชพเชเชฒ
FROM openjdk:8u212-jdk
ARG JMETER_VER="5.2"
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VER
ENV PATH $JMETER_HOME/bin:$PATH
RUN mkdir -p /jmeter/results
&& mkdir /jmeter/tests
WORKDIR /jmeter
COPY apache-jmeter-$JMETER_VER.tgz .
RUN tar -xzf $JMETER_HOME.tgz
&& rm $JMETER_HOME.tgz
&& ls -la
RUN sed -i s/#server.rmi.ssl.disable=false/server.rmi.ssl.disable=true/ $JMETER_HOME/bin/jmeter.properties
EXPOSE 60000
yaml เชเซ
$ tee is.yaml<<EOF
apiVersion: v1
kind: ImageStream
metadata:
labels:
build: jmeter-base
name: jmeter-base
EOF
bc.yaml
$ tee bc.yaml<<EOF
apiVersion: v1
kind: BuildConfig
metadata:
name: jmeter-base
spec:
failedBuildsHistoryLimit: 5
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: 'jmeter-base:latest'
postCommit: {}
resources: {}
runPolicy: Serial
source:
binary: {}
type: Binary
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: 'openjdk:8u212-jdk'
type: Docker
successfulBuildsHistoryLimit: 5
EOF
เชเชพเชฒเซ เชตเชธเซเชคเซเช เชฌเชจเชพเชตเซเช IS
ะธ BC
:
$ oc create -f is.yaml -n perftest
$ oc create -f bc.yaml -n perftest
เชนเชตเซ เชฌเซเช เชเชฎเซเช เชเชธเซเชฎเซเชฌเชฒ เชเชฐเซเช jmeter-base
:
$ oc start-build jmeter-base -n perftest --from-dir=. --follow
JMeter WEB
jmeter-web
เช เชเช เช
เชชเชพเชเซ เชตเซเชฌ เชธเชฐเซเชตเชฐ เชเซ. เชคเซเชจเซเช เชเชพเชฐเซเชฏ เชเซเชตเชพ เชฎเชพเชเซ เชชเชฐเซเชเซเชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ เชธเชพเชฅเซ เชกเชฟเชฐเซเชเซเชเชฐเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพเชจเซเช เชเซ.
เชคเซเชฏเชพเชฐ Dockerfile
เช
เชจเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒ httpd.conf
. เชจเชฟเชฐเซเชฆเซเชถเชจ เชฎเชพเชเซ DocumentRoot
เชฎเซเชฒเซเชฏ เชธเซเช /jmeter/reports
, เชเชเชฒเซ เชเซ เชกเชฟเชฐเซเชเซเชเชฐเซ เชเซ เชเซเชฎเชพเช เชชเชฐเซเชเซเชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ เชธเชพเชเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชกเซเชเชฐเชซเชพเชเชฒ
$ tee Dockerfile<<EOF
FROM httpd:2.4
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
RUN chmod -R 777 /usr/local/apache2/logs
EXPOSE 8080
CMD ["httpd", "-D", "FOREGROUND"]
EOF
yaml เชเซ
$ tee is.yaml<<EOF
apiVersion: v1
kind: ImageStream
metadata:
generation: 1
labels:
build: jmeter-web
name: jmeter-web
EOF
bc.yaml
$ tee bc.yaml<<EOF
apiVersion: v1
kind: BuildConfig
metadata:
name: jmeter-web
spec:
failedBuildsHistoryLimit: 5
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: 'jmeter-web:latest'
runPolicy: Serial
source:
binary: {}
type: Binary
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: 'httpd:2.4'
type: Docker
successfulBuildsHistoryLimit: 5
EOF
เชเชพเชฒเซ เชฌเชจเชพเชตเซเช ImageStream
ะธ BuildConfig
เชตเชธเซเชคเซเช
$ oc create -f is.yaml -n perftest
$ oc create -f bc.yaml -n perftest
เชฎเชพเชเชฅเซ เชเช เชเชฌเซ เชเชเชคเซเชฐเชฟเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช Dockerfile
:
$ oc start-build jmeter-web -n perftest --from-dir=. --follow
dc.yaml
$ tee dc.yaml<<EOF
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
name: jmeter-web
spec:
replicas: 1
template:
metadata:
labels:
name: jmeter-web
spec:
containers:
- image: 172.30.1.1:5000/perftest/jmeter-web
name: jmeter-web
volumeMounts:
- mountPath: /jmeter/reports
name: jmeter-reports
ports:
- containerPort: 80
protocol: TCP
- containerPort: 8080
protocol: TCP
volumes:
- name: jmeter-reports
persistentVolumeClaim:
claimName: jmeter-reports
EOF
sc.yaml
$ tee sc.yaml<<EOF
apiVersion: v1
kind: Service
metadata:
labels:
app: jmeter-web
name: jmeter-web
spec:
ports:
- name: 8080-tcp
port: 8080
protocol: TCP
targetPort: 8080
selector:
deploymentconfig: jmeter-web
sessionAffinity: None
type: ClusterIP
EOF
เชเชพเชฒเซ เชตเชธเซเชคเซเช เชฌเชจเชพเชตเซเช Service
ะธ DeploymentConfig
:
$ oc create -f sc.yaml -n perftest
$ oc create -f dc.yaml -n perftest
เชเซเชฎเซเชเชฐ-เชฎเชพเชธเซเชเชฐ
เชเชพเชฒเซ Apache เชตเซเชฌ เชธเชฐเซเชตเชฐเชจเซ เชเชฎเชพเชตเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเช.
เช เชกเซเชเชฐเชซเชพเชเชฒ เชเซ jmeter-master
'เช, เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ jmeter-base
, เชเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชถเซ เช
เชจเซ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชธเชเชเซเชฐเชนเชฎเชพเช เชธเชพเชเชตเชถเซ.
เชกเซเชเชฐเชซเชพเชเชฒ
Dockerfile
เชฎเชพเชเซ jmeter-master
, เชชเชฐ เชเชงเชพเชฐเชฟเชค jmeter-base
.
FROM jmeter-base
ARG JMETER_VER="5.2"
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VER
ENV PATH $JMETER_HOME/bin:$PATH
WORKDIR /jmeter
COPY run.sh /jmeter/
COPY tests/*.jmx /jmeter/tests/
RUN chmod +x /jmeter/run.sh
ENTRYPOINT ["/bin/bash"]
CMD ["/jmeter/run.sh"]
เชฐเชจ.เชถ
run.sh
เช เชเช เชธเซเชเซเชฐเชฟเชชเซเช เชเซ เชเซ JMeter เชเชฒเชพเชตเซ เชเซ เช
เชจเซ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชธเชพเชเชตเซ เชเซ files
.
เชฆเชฐเซเช เชตเชเชคเซ เชเซเชฏเชพเชฐเซ เชธเซเชเซเชฐเชฟเชชเซเช เชฒเซเชเช เชฅเชพเชฏ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเซ เช เชเชพเชเชจเชพ เชชเชฐเซเชเซเชทเชฃเซเชจเซ เชเชพเชขเซ เชจเชพเชเซ เชเซ, เชเซเชฅเซ เชคเชฎเซ เชฎเชพเชคเซเชฐ เชจเชตเซเชจเชคเชฎ เชกเซเชเชพ เชธเชพเชฅเซ เช เชเชพเชฎ เชเชฐเซ เชถเชเซ. เชชเชฐเชเชคเซ เช เชเซเช เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เชคเชฎเซ เชคเชฎเชพเชฐเซ เชเชฐเซเชฐเชฟเชฏเชพเชคเซเชจเซ เช เชจเซเชฐเซเชช เชคเซเชจเซ เชฌเชฆเชฒเซ เชถเชเซ เชเซ.
#!/bin/bash
set -e
if [ -d "/jmeter/reports/files" ]
then
echo "Directory /jmeter/reports/files exist - OK"
else
echo "Creating /jmeter/reports/files directory"
mkdir /jmeter/reports/files
fi
if [ -d "/jmeter/reports/dashboards" ]
then
echo "Directory /jmeter/reports/dashboards exist"
else
echo "Creating /jmeter/reports/dashboards directory"
mkdir /jmeter/reports/dashboards
fi
echo "*** JMeter START Tests ***"
for item in $(ls -1 /jmeter/tests | grep jmx)
do
echo "*** Removing dashboard directory for $item"
rm -rdf /jmeter/reports/dashboards/${item}*
echo "*** Removing tests directory for $item"
rm -rdf /jmeter/reports/files/${item}*
echo "*** Testing a $item file ***"
jmeter -n -t /jmeter/tests/${item} -l /jmeter/reports/files/${item}-report.jtl -e -o /jmeter/reports/dashboards/${item}-dash
done
yaml เชเซ
$ tee is.yaml<<EOF
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
generation: 1
labels:
build: jmeter-master
name: jmeter-master
EOF
bc.yaml
$ tee bc.yaml<<EOF
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
name: jmeter-master
spec:
failedBuildsHistoryLimit: 5
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: 'jmeter-master:latest'
runPolicy: Serial
source:
binary: {}
type: Binary
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: 'jmeter-base:latest'
type: Docker
successfulBuildsHistoryLimit: 5
EOF
เชเชพเชฒเซ เชฌเชจเชพเชตเซเช IS
ะธ BC
เชตเชธเซเชคเซเช
$ oc create -f is.yaml -n perftest
$ oc create -f bc.yaml -n perftest
เช
เชฎเซ เชเชเชคเซเชฐเชฟเชค เชเชฐเซเช เชเซเช jmeter-master
เชเชฌเซ:
$ oc start-build jmeter-master -n perftest --from-dir=. --follow
เชเซเชฌ
Job
เชจเซ เชเชชเชฏเซเช เชฅเชพเชฏ เชเซ OpenShift
เชเช เช
เชฅเชตเชพ เชตเชงเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ POD
เชจเซ เช
เชจเซ เชเชฆเซเชถ/เชธเซเชเซเชฐเซเชชเซเชเชจเซ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเซเชฏเชพ เชชเชเซ เชคเซเชฎเชจเซ เชธเชซเชณเชคเชพเชชเซเชฐเซเชตเช เชชเซเชฐเซเชฃ เชฅเชตเชพเชจเซ เชเชพเชคเชฐเซ เชเชชเซ เชเซ.
$ tee job.yaml<<EOF
apiVersion: batch/v1
kind: Job
metadata:
name: jmeter-master
labels:
jobName: jmeter-master
spec:
completions: 1
parallelism: 1
template:
metadata:
name: jmeter-master
labels:
jobName: jmeter-master
spec:
containers:
- name: jmeter-master
image: 172.30.1.1:5000/perftest/jmeter-master:latest
volumeMounts:
- mountPath: /jmeter/reports
name: jmeter-reports
imagePullPolicy: Always
volumes:
- name: jmeter-reports
persistentVolumeClaim:
claimName: jmeter-reports
restartPolicy: Never
terminationGracePeriodSeconds: 30
EOF
เชเชฌเซเชเซเชเซเช เชฌเชจเชพเชตเซ Job
:
$ oc create -f job.yaml -n perftest
เชเชพเชฒเซ เชจเซเชเชฐเซเชจเซ เชธเซเชฅเชฟเชคเชฟ เชคเชชเชพเชธเซเช:
$ oc get jobs -n perftest
NAME DESIRED SUCCESSFUL AGE
jmeter-master 1 1 5m
เชเชพ deleteเซ เชจเชพเชเชตเชพ เชฎเชพเชเซ Job
เชเชพเชฒเซ เชเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซเช:
$ oc delete jobs/jmeter-master -n perftest --ignore-not-found=true
เชเซเชจเชเชฟเชจเซเชธ เชชเชพเชเชชเชฒเชพเชเชจ
เชนเชตเซ เชเชเซเชฎเซเชถเชจ. เชเชพเชฒเซ เชซเชฐเซเชฅเซ เชชเชเชฒเชพเชเช เชชเชฐ เชเชเช:
git clone
oc whoami -t
oc start-build ...
oc delete jobs/jmeter-master
oc create -f job.yaml -n perftest
เชจเซเชเซ เชเช เชชเชพเชเชชเชฒเชพเชเชจ เชเซ เชเซเชฎเชพเช เชฐเซเชชเซเชเซเชเชฐเซ เชเซเชฒเซเชจเชฟเชเช, เชกเชฟเชฒเซเชถเชจ เช
เชจเซ เชเชชเชจเชถเชฟเชซเซเช เชเซเชฐเชฟเชเชถเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ Job
เชจเซ
#!groovy
pipeline {
agent any
stages {
stage('Start Notifications') {
steps {
echo "Sending Email Notification"
}
post {
always {
echo "STARTED - Performance Tests"
mail(to: '[email protected]', from: "[email protected]", subject: "START - Performance Tests",mimeType: "text/html", body: "<strong>START - Performance Tests</strong><br /><br />Project: Name of Project<br />Environment: PerfTest<br />Build number: ${env.BUILD_NUMBER}<br />Build URL: ${env.BUILD_URL}"
}
}
}
stage('Git checkout') {
steps {
...
}
}
stage('Perf Tests') {
steps {
script {
sh '''
OC_CMD1="oc login -u=username -p=PASS -n=perftest
--server=https://...:8443"
$OC_CMD1
OC_TOKEN=`oc whoami -t`
OC_CMD2="oc --token=$OC_TOKEN --server=https://...:8443
start-build jmeter-master -n=perftest --from-dir=./master
--follow=true"
OC_CMD3="oc --token=$OC_TOKEN --server=https://...:8443
delete jobs/jmeter-master -n=perftest --ignore-not-found=true"
OC_CMD4="oc--token=$OC_TOKEN --server=https://...:8443
create -f ./master/job.yaml -n=perftest"
$OC_CMD2
$OC_CMD3
$OC_CMD4
'''
}
}
}
post {
failure {
echo "FAILED - Performance Tests"
mail(to: '[email protected]', from: "[email protected]", subject: "FAILED - Performance Tests",mimeType: "text/html", body: "<strong>FAILED - Performance Tests</strong><br /><br />Project: Name of Project<br />Environment: PerfTest<br />Build number: ${env.BUILD_NUMBER}<br />Build URL: ${env.BUILD_URL}"
}
success {
echo "SUCCESSED - Performance Tests"
mail(to: '[email protected]', from: "[email protected]", subject: "SUCCESSED - Performance Tests",mimeType: "text/html", body: "<strong>SUCCESSED - Performance Tests</strong><br /><br />Project: Name of Project<br />Environment: PerfTest<br />Build number: ${env.BUILD_NUMBER}<br />Build URL: ${env.BUILD_URL}"
}
}
}
}
เชชเชพเชเชชเชฒเชพเชเชจ เชคเซเชจเซ เชเชพเชฎเชเซเชฐเซ เชชเซเชฐเซเชฃ เชเชฐเซเชฏเชพ เชชเชเซ, เช
เชฎเชจเซ เชเชฎเซเชฒ เชฆเซเชตเชพเชฐเชพ เชธเซเชเชจเชพ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ '[email protected]
เชฅเซ [email protected]
.
เชฒเชฟเชเช เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซเชจเซ files
, เชเซ เชชเชฐเซเชเซเชทเชฃ เช
เชนเซเชตเชพเชฒเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ:
เชซเชพเชเชฒ เชธเชฎเชพเชตเชฟเชทเซเชเซ ya.HTTP.Request.jmx-report.jtk
:
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1597311456443,569,Yandex - HTTP Request,200,Ok,Thread Group 1-1,text,true,,59449,220,1,1,https://ya.ru/,145,0,57
1597311456443,147,Yandex - HTTP Request-0,302,Found,Thread Group 1-1,,true,,478,110,1,1,http://ya.ru/,145,0,57
1597311456592,420,Yandex - HTTP Request-1,200,Ok,Thread Group 1-1,text,true,,58971,110,1,1,https://ya.ru/,370,0,259
เชจเชฟเชทเซเชเชฐเซเชท
เช เชฒเซเช OpenShift เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช JMeter เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซเชจเชพ เชตเชฟเชเชฒเซเชชเซเชฎเชพเชเชฅเซ เชเชเชจเซเช เชจเชฟเชฆเชฐเซเชถเชจ เชเชฐเซ เชเซ. เช เชฎเซ เชคเชฎเชพเชฎ เชชเชเชฒเชพเช เชเชพเชคเซ เช เชชเซเชฐเซเชฃ เชเชฐเซเชฏเชพ, เชคเซเชฏเชพเชฐ เชฌเชพเชฆ เช เชฎเซ เชเซเชจเชเชฟเชจเซเชธ เชชเชพเชเชชเชฒเชพเชเชจ เชฌเชจเชพเชตเซ เชเซเชฅเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชธเซเชตเชเชพเชฒเชฟเชค เชเชฐเซ เชถเชเชพเชฏ.
เชธเซเชคเซเชฐเซเชคเซ เช เชจเซ เชฆเชธเซเชคเชพเชตเซเชเซเชเชฐเชฃ
JMeter - เชกเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเชฟเชคเชฐเชฟเชค เชฒเซเชก เชชเชฐเซเชเซเชทเชฃ เชเซเชจเชเชฟเชจเซเชธ เชชเชพเชเชชเชฒเชพเชเชจเชฎเชพเชเชฅเซ เชเชชเชจเชถเชฟเชซเซเชเชฎเชพเช JMeter เชเซเชธเซเช เชเชฒเชพเชตเชตเซ เชเชชเชจเชถเซเชซเซเชเชธเชคเชค เชธเชเชเซเชฐเชน เชฌเชฟเชฒเซเชกเซเชธ เช เชจเซ เชเชฎเซเช เชธเซเชเซเชฐเซเชฎเซเชธ
เชธเซเชฐเซเชธ: www.habr.com