jmeter 脚本 排除_对Buildah脚本进行故障排除
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-by
, author
和label
字段。 此时,容器已设置为运行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)上反复遇到问题。 我添加了调试语句,但仍然没有找到任何东西。 奇怪的是,我发现,如果我换成podman
与docker
在脚本,一切工作就好了。 我对开发VM并不总是很友善,因此我建立了一个新VM并安装了所有新鲜,干净的东西。
脚本在那里也失败了,所以并不是我的开发VM本身表现不佳。 在思考问题时,我多次运行了脚本,希望从输出中获得任何线索。 我的下一个想法是进入容器并在其中环顾四周。 我注释掉了stop
和rm
行,并使用以下命令重新运行了脚本:
podman exec --tty 129d4d33169f /bin/bash
其中129d4d33169f
是来自podman ps
命令的容器的CONTAINER ID
值。 我在容器内运行curl localhost
, 瞧 ! 我从index.html收到了正确的输出。 然后,我退出了该容器,并从运行该容器的主机上再次尝试了curl
命令,这一次它起作用了。
终于,大理石头上的光亮了。 在过去的测试中,我一直在使用Apache HTTPD服务器,并尝试从另一个会话连接到该服务器。 在那些测试中,如果我执行得太快,服务器将拒绝我。
可以这么简单吗?
事实证明,就是这么简单。 我们在podman run
和curl localhost
命令之间添加了sleep 3
线,一切都按预期工作。 似乎正在发生的是podman run
命令正在非常快速地启动容器和NGINX服务器并返回命令行。 如果您不等待几秒钟,则NGINX服务器没有时间启动和开始接受连接请求。
问题确实是工程师要解决的问题,答案通常不在代码本身中。 在查看问题时,最好退后一点,不要过于关注位和字节。
本文的早期版本最初出现在ProjectAtomic.io博客上。
翻译自: https://opensource.com/article/18/6/buildah-troubleshooting
jmeter 脚本 排除
jmeter 脚本 排除_对Buildah脚本进行故障排除相关推荐
- 发动机异响故障诊断与排除_发动机缺缸故障诊断以及排除方法
案例导入 某2017款1.6L手动速腾汽车,行驶里程约15万公里,发动机怠速不稳,加速时有抖动.缺缸现象,仪表板的ESP灯一直点亮. 那么什么是发动机缺缸?发动机缺缸是指发动机故障导致动力不足,会没动 ...
- 豪沃轻abs12v电是什么系统_重汽T7H电器故障排除指导书.pdf
T7H 电器故障排除指导书 2016 年 12 月 目录 一. 整车无电5 1. 电器接线盒见检查项目15 2. 蓄电池见检查项目25 3. 电源总开关见检查项目35 4. 起动机正极见检查项目45 ...
- 排除某个类_Spark Troubleshooting(故障排除)
1 故障排除一:控制reduce端缓冲大小以避免OOM 在Shuffle过程,reduce端task并不是等到map端task将其数据全部写入磁盘后再去拉取,而是map端写一点数据,reduce端ta ...
- r710服务器系统故障排除,DELL R710服务器安装windows sever2008 故障排除经历(一)硬件排错...
前些天导师说服务器操作系统版本太低,当时运过来的时候要装win7的,结果装了两天没装上,经销商只好装了个win2000sever了事.但是买的时候可是2011年啊,用个win2000的系统,这种硬件不 ...
- 计算机组装及故障排除技巧,计算机组装维护与故障排除基础教程(附光盘第2版)/新起点电脑教程...
导语 内容提要 作为"新起点电脑教程"系列丛书的一个分册,文杰书院编著的<计算机组装维护与故障排除基础教程(附光盘第2版)>以通俗易懂的语言.精挑细选的实用技巧.翔实生 ...
- 跨站点脚本(xss)_跨站点脚本(XSS)和预防
跨站点脚本(xss) 如OWASP网站(https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))所述,跨站点脚本(XSS)攻击的变种几乎是 ...
- 执行python命令和脚本文件_执行python脚本文件的方法
执行python脚本文件的方法 发布时间:2020-09-03 10:17:11 来源:亿速云 阅读:60 作者:小新 小编给大家分享一下执行python脚本文件的方法,相信大部分人都还不怎么了解,因 ...
- python 脚本梦幻西游_从.air 脚本到纯.py 脚本的距离究竟有多远
此文章来源于项目官方公众号:"AirtestProject" 版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 有很多新手同学在刚开始使用 AirtestI ...
- python脚本下载_日记python脚本
日记python脚本是一款日记辅助脚本,主要是为用户快速读取日期,并创建当日对应的年文件夹.月文件夹,节省了用户自己手动去创建的麻烦.该脚本工具在使用前需要进行一些调整,诸如创建文件夹的位置等都需要用 ...
最新文章
- 麻省理工深度学习基础公开课.ppt
- Netflix实用API设计 1:Protobuf FieldMask实践
- 【树莓派 Raspberry-Pi 】系统安装及一些必要的配置
- 安卓高手之路之图形系统(6)requestLayout的流程
- m叉树的叶子节点数量
- 如果使用SQLExpress 2005时要求'sp_configure 'User instances enabled''
- 福布斯评最佳与最差老板 TCL上黑榜
- matplotlib.pyplot中API介绍
- 基于模糊PID的液压舵机伺服系统
- linux下远程桌面连接工具,linux远程连接windows工具(tsclient 远程桌面)
- 信息资源管理【二】之 信息化规划与组织
- Electron技术架构
- 一个最最简单的画图软件
- ImageCompressor图片压缩
- 数据集市是什么?数据集市和数据仓库有什么区别
- 导入三方库是出现NotFount
- 神州租车,致力于提供更加便利的出行方式
- 第5篇-分析北京租房的房源信息
- 微信小程序基础篇-模板与配置
- c语言冒泡排序与二分法排序