【问题标题】:Azure Kubernetes - JMeter No X11 DISPLAY variable was setAzure Kubernetes - JMeter 没有设置 X11 DISPLAY 变量
【发布时间】:2021-11-26 02:05:33
【问题描述】:

我正在 Azure Kubernetes 服务之上开发一个 JMeter 动态主从性能环境。在我的 JMeter Slave 部署中,Pod 进入CrashLoopBackOff 状态并再次创建另一个 Pod,这将继续循环。在查看 JMeter Slave 日志时,我发现了这个错误 An error occurred: No X11 DISPLAY variable was set, but this program performed an operation which requires it.

目前,我正在使用 Helm 部署 pod,下面是我的 jmeter-slave-deployment.yamlvalues.yaml 文件。

jmeter-slave-deployment.yaml 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.dep.name }}
  namespace: perf-platform
  labels:
    app.kubernetes.io/name: {{ .Values.dep.name }}

spec:
  replicas: {{ .Values.slave.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ .Values.dep.name }}

  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ .Values.dep.name }}

    spec:
      
      containers:
     
      - name: distributed-jmeter-slave
        image: "{{ .Values.slave.image }}:{{ .Values.slave.tag }}"
        imagePullPolicy: {{ .Values.slave.pullPolicy }}

        env:
        - name: HEAP
          value: "-Xms{{ .Values.slave.heap.xms1.memory }} -Xmx{{ .Values.slave.heap.xms2.memory }}"
        
        ports:
          - containerPort: 50000
          - containerPort: 1099
        
        resources:
          requests:
            memory: "{{ .Values.slave.res.req.mem }}"
            cpu: "{{ .Values.slave.res.req.cpu }}"
          limits:
            memory: "{{ .Values.slave.res.lim.mem }}"
            cpu: "{{ .Values.slave.res.lim.cpu }}"

values.yaml 文件

#JMeter Slave Configuration
dep:
  name: distributed-jmeter
slave:
  replicaCount: 1
  image: gsengun/jmeter
  tag: 5.4.1
  pullPolicy: IfNotPresent
  res:
    req:
      mem: "1024Mi"
      cpu: "100m"
    lim:
      mem: "1024Mi"
      cpu: "100m"
  heap:
    xms1:
      memory: "512m"
    xms2:
      memory: "512m"

【问题讨论】:

    标签: azure kubernetes jmeter kubernetes-helm


    【解决方案1】:

    No X11 DISPLAY variable was set 错误意味着您正在尝试在 GUI 模式下运行 JMeter,并且您正在使用的(或其他)映像没有安装/运行 X server

    我看不到运行 JMeter Slave 进程的适当命令,所以我的期望是您需要修改您的 jmeter-slave-deployment.yaml 以指定 command 指令,如下所示:

    command: ["jmeter-server"]
    

    如果您喜欢复制和粘贴:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: {{ .Values.dep.name }}
      namespace: perf-platform
      labels:
        app.kubernetes.io/name: {{ .Values.dep.name }}
    
    spec:
      replicas: {{ .Values.slave.replicaCount }}
      selector:
        matchLabels:
          app.kubernetes.io/name: {{ .Values.dep.name }}
    
      template:
        metadata:
          labels:
            app.kubernetes.io/name: {{ .Values.dep.name }}
    
        spec:
          
          containers:
        
          - name: distributed-jmeter-slave
            image: "{{ .Values.slave.image }}:{{ .Values.slave.tag }}"
            imagePullPolicy: {{ .Values.slave.pullPolicy }}
            command: ["jmeter-server"]
    
            env:
            - name: HEAP
              value: "-Xms{{ .Values.slave.heap.xms1.memory }} -Xmx{{ .Values.slave.heap.xms2.memory }}"
            
            ports:
              - containerPort: 50000
              - containerPort: 1099
            
            resources:
              requests:
                memory: "{{ .Values.slave.res.req.mem }}"
                cpu: "{{ .Values.slave.res.req.cpu }}"
              limits:
                memory: "{{ .Values.slave.res.lim.mem }}"
                cpu: "{{ .Values.slave.res.lim.cpu }}"
    

    更多信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-15
      • 2011-07-10
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      相关资源
      最近更新 更多