jmeter 脚本 排除

作为十几岁的父亲和软件工程师,我大部分时间都在处理问题。 无论问题是大还是小,很多时候您都无法直接查看问题原因。 相反,您需要退后一步,调查情况存在的环境。 我最近意识到了这一点,当时有一位介绍容器技术的同事(包括Buildah和Podman等容器管理器)要求我帮助解决他打算在几天后的会议上演示的演示脚本问题。

该脚本过去曾经有用,但现在不起作用了,他处于紧要关头。 这是一个演示脚本,它使用Buildah创建基于Fedora 28的容器并在其中安装NGINX HTTPD服务器。 然后,它使用Podman运行容器并启动NGINX服务器。 最后,脚本执行快速curl命令以拉出index.html文件,以证明服务器已启动并响应。 所有这些命令在设置和测试期间均有效,但是现在curl失败了。 (顺便说一句,如果您想了解Buildah或运行演示,请看一下我同事的完整脚本 ,因为它非常有用。)

我与Podman小组的成员进行了交谈,他们无法重现此问题,因此我认为这可能是Buildah中的问题。 我们进行了一连串的调试和检查配置代码,以确保正确设置了端口,正确提取了映像并保存了所有内容。 全部检查了。 先前的演示过程均已成功完成:NGINX服务器将按预期提供index.html。 这很奇怪,而且最近对Buildah代码的更改都不会破坏任何这些。

在会议开始的最后期限临近之前,我开始进行研究,将脚本缩小为以下内容。

cat ~/tom_nginx.sh
#!/bin/bash

# docker-compatibility-demo.sh
# author : demodude
# Assumptions install buildah, podman & docker
# Do NOT start the docker deamon
# Set some of the variables below

demoimg=dockercompatibilitydemo
quayuser=ipbabble
myname="Demo King"
distro=fedora
distrorelease=28
pkgmgr=dnf # switch to yum if using yum

#Setting up some colors for helping read the demo output
bold=$(tput bold)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
cyan=$(tput setaf 6)
reset=$(tput sgr0)

echo -e "Using ${green}GREEN${reset} to introduce Buildah steps"
echo -e "Using ${yellow}YELLOW${reset} to introduce code"
echo -e "Using ${blue}BLUE${reset} to introduce Podman steps"
echo -e "Using ${cyan}CYAN${reset} to introduce bash commands"
echo -e "Using ${red}RED${reset} to introduce Docker commands"

echo -e "Building an image called ${demoimg}"

set -x
newcontainer=$(buildah from ${distro})
buildah run $newcontainer -- ${pkgmgr} -y update && ${pkgmgr} -y clean all
buildah run $newcontainer -- ${pkgmgr} -y install nginx && ${pkgmgr} -y clean all
buildah run $newcontainer bash -c 'echo "daemon off;" >> /etc/nginx/nginx.conf'
buildah run $newcontainer bash -c 'echo "nginx on OCI Fedora image, built using Buildah" > /usr/share/nginx/html/index.html'
buildah config --port 80 --entrypoint /usr/sbin/nginx $newcontainer
buildah config --created-by "${quayuser}" $newcontainer
buildah config --author "${myname}" --label name=$demoimg $newcontainer
buildah inspect $newcontainer
buildah commit $newcontainer $demoimg
buildah images
containernum=$(podman run -d -p 80:80 $demoimg)
curl localhost # Failed
podman ps
podman stop $containernum
podman rm $containernum


脚本在做什么

set -x部分开始,您可以看到脚本使用buildah from创建了一个新的Fedora容器。 接下来的四个步骤使用buildah run在容器中进行一些配置:前两个步骤使用DNF软件包管理器进行更新,安装NGINX并清理所有内容。 第三步和第四步准备NGINX运行-第三步设置/etc/nginx/nginx.conf文件并daemon off ,第四步中的run命令创建要显示的index.html文件。

buildah config的三个buildah config命令在容器内做了一些内务处理。 他们设置了端口80,将入口点设置为NGINX,并在新容器中修改了created-byauthorlabel字段。 此时,容器已设置为运行NGINX,并且buildah inspect命令使您可以遍历容器的字段和关联的元数据以验证所有内容。

该脚本使用Podman来运行容器和NGINX服务器。 Podman是一个新的开源实用程序,用于处理Linux容器和Kubernetes容器,它模仿Docker命令行的许多功能,但不需要Docker的守护进程。 为了使Podman运行该容器,必须首先将其另存为映像-这是buildah commit行正在执行的操作。

最后, podman run线启动容器,并且-由于我们使用入口点配置端口和设置端口的方式,NGINX服务器启动并可以使用。 总是很高兴地说服务器正在“运行”,但是证明能够与服务器交互。 因此,脚本执行了一个简单的curl localhost ; 如果工作正常,index.html应包含:

 nginx on OCI Fedora image, built using Buildah 

但是,距离下一个演示仅几个小时,它发送回:

 curl: (7) Failed to connect to jappa.cos.redhat.com port 80: Connection refused 

现在,那不是很好。

诊断问题

我在开发虚拟机(VM)上反复遇到问题。 我添加了调试语句,但仍然没有找到任何东西。 奇怪的是,我发现,如果我换成podmandocker在脚本,一切工作就好了。 我对开发VM并不总是很友善,因此我建立了一个新VM并安装了所有新鲜,干净的东西。

脚本在那里也失败了,所以并不是我的开发VM本身表现不佳。 在思考问题时,我多次运行了脚本,希望从输出中获得任何线索。 我的下一个想法是进入容器并在其中环顾四周。 我注释掉了stoprm行,并使用以下命令重新运行了脚本:

 podman exec --tty 129d4d33169f /bin/bash 

其中129d4d33169f是来自podman ps命令的容器的CONTAINER ID值。 我在容器内运行curl localhost ! 我从index.html收到了正确的输出。 然后,我退出了该容器,并从运行该容器的主机上再次尝试了curl命令,这一次它起作用了。

终于,大理石头上的光亮了。 在过去的测试中,我一直在使用Apache HTTPD服务器,并尝试从另一个会话连接到该服务器。 在那些测试中,如果我执行得太快,服务器将拒绝我。

可以这么简单吗?

事实证明,就是这么简单。 我们在podman runcurl localhost命令之间添加了sleep 3线,一切都按预期工作。 似乎正在发生的是podman run命令正在非常快速地启动容器和NGINX服务器并返回命令行。 如果您不等待几秒钟,则NGINX服务器没有时间启动和开始接受连接请求。

问题确实是工程师要解决的问题,答案通常不在代码本身中。 在查看问题时,最好退后一点,不要过于关注位和字节。


本文的早期版本最初出现在ProjectAtomic.io博客上。

翻译自: https://opensource.com/article/18/6/buildah-troubleshooting

jmeter 脚本 排除

jmeter 脚本 排除_对Buildah脚本进行故障排除相关推荐

  1. 发动机异响故障诊断与排除_发动机缺缸故障诊断以及排除方法

    案例导入 某2017款1.6L手动速腾汽车,行驶里程约15万公里,发动机怠速不稳,加速时有抖动.缺缸现象,仪表板的ESP灯一直点亮. 那么什么是发动机缺缸?发动机缺缸是指发动机故障导致动力不足,会没动 ...

  2. 豪沃轻abs12v电是什么系统_重汽T7H电器故障排除指导书.pdf

    T7H 电器故障排除指导书 2016 年 12 月 目录 一. 整车无电5 1. 电器接线盒见检查项目15 2. 蓄电池见检查项目25 3. 电源总开关见检查项目35 4. 起动机正极见检查项目45 ...

  3. 排除某个类_Spark Troubleshooting(故障排除)

    1 故障排除一:控制reduce端缓冲大小以避免OOM 在Shuffle过程,reduce端task并不是等到map端task将其数据全部写入磁盘后再去拉取,而是map端写一点数据,reduce端ta ...

  4. r710服务器系统故障排除,DELL R710服务器安装windows sever2008 故障排除经历(一)硬件排错...

    前些天导师说服务器操作系统版本太低,当时运过来的时候要装win7的,结果装了两天没装上,经销商只好装了个win2000sever了事.但是买的时候可是2011年啊,用个win2000的系统,这种硬件不 ...

  5. 计算机组装及故障排除技巧,计算机组装维护与故障排除基础教程(附光盘第2版)/新起点电脑教程...

    导语 内容提要 作为"新起点电脑教程"系列丛书的一个分册,文杰书院编著的<计算机组装维护与故障排除基础教程(附光盘第2版)>以通俗易懂的语言.精挑细选的实用技巧.翔实生 ...

  6. 跨站点脚本(xss)_跨站点脚本(XSS)和预防

    跨站点脚本(xss) 如OWASP网站(https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))所述,跨站点脚本(XSS)攻击的变种几乎是 ...

  7. 执行python命令和脚本文件_执行python脚本文件的方法

    执行python脚本文件的方法 发布时间:2020-09-03 10:17:11 来源:亿速云 阅读:60 作者:小新 小编给大家分享一下执行python脚本文件的方法,相信大部分人都还不怎么了解,因 ...

  8. python 脚本梦幻西游_从.air 脚本到纯.py 脚本的距离究竟有多远

    此文章来源于项目官方公众号:"AirtestProject" 版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 有很多新手同学在刚开始使用 AirtestI ...

  9. python脚本下载_日记python脚本

    日记python脚本是一款日记辅助脚本,主要是为用户快速读取日期,并创建当日对应的年文件夹.月文件夹,节省了用户自己手动去创建的麻烦.该脚本工具在使用前需要进行一些调整,诸如创建文件夹的位置等都需要用 ...

最新文章

  1. 麻省理工深度学习基础公开课.ppt
  2. Netflix实用API设计 1:Protobuf FieldMask实践
  3. 【树莓派 Raspberry-Pi 】系统安装及一些必要的配置
  4. 安卓高手之路之图形系统(6)requestLayout的流程
  5. m叉树的叶子节点数量
  6. 如果使用SQLExpress 2005时要求'sp_configure 'User instances enabled''
  7. 福布斯评最佳与最差老板 TCL上黑榜
  8. matplotlib.pyplot中API介绍
  9. 基于模糊PID的液压舵机伺服系统
  10. linux下远程桌面连接工具,linux远程连接windows工具(tsclient 远程桌面)
  11. 信息资源管理【二】之 信息化规划与组织
  12. Electron技术架构
  13. 一个最最简单的画图软件
  14. ImageCompressor图片压缩
  15. 数据集市是什么?数据集市和数据仓库有什么区别
  16. 导入三方库是出现NotFount
  17. 神州租车,致力于提供更加便利的出行方式
  18. 第5篇-分析北京租房的房源信息
  19. 微信小程序基础篇-模板与配置
  20. c语言冒泡排序与二分法排序

热门文章

  1. 关于设计秒杀系统的几个问题
  2. 深入理解并发的关键字-synchronized
  3. python来构建多层网络
  4. 51Nod 1494 选举拉票(权值线段树)
  5. 算法科普:有趣的霍夫曼编码
  6. 《Cisco安全防火墙服务模块(FWSM)解决方案》——1.4 利用包检测技术
  7. Linxu 学习记录
  8. 搭建你的持续集成server - CruiseControl step by step(1)
  9. 有符号数与无符号数间的转换
  10. 利用 Domino V8 新特性开发 Mashup 应用(转载)