在人工智能的热潮中迷失方向,我从微小处着手





本文永久链接 – https://tonybai.com/2026/01/17/ai-era-cognitive-friction-as-your-last-moat
大家好,我是Tony Bai。
我们正在经历一场前所未有的知识通胀。
在 AI 时代,获取答案的成本已经降到了零。遇到 Bug?粘贴报错给 AI。写不出周报?给个主题让 AI 生成。想学新框架?让 AI 总结核心概念。
一切都变得无比丝滑,无比高效。
但你有没有发现,在这种“顺滑”的表象下,一种隐秘的症状正在蔓延:
《纽约时报》畅销书《五种财富》的作者Sahil Bloom 将这种症状称为 “AI Brain”(AI 大脑)。
这并不是说你变笨了,而是说你变钝了(Dull)。
就像一个长期坐轮椅的人,腿部肌肉必然会萎缩。当我们习惯了 AI 这种“认知轮椅”,我们大脑中负责深度思考、构建逻辑、处理混乱的那些神经连接,正在慢慢断开。
AI 消除了“摩擦”,但人类的智慧,恰恰诞生于“摩擦”之中。

我们一直被教育要追求效率,要消除阻力。但在认知科学领域,这个逻辑是反的。
真正的学习和创造,发生于“First-pass Thinking”(第一遍思考)的挣扎中。
当你面对一个复杂的架构难题抓耳挠腮时,当你面对一张白纸试图构建文章结构感到挫败时,请珍惜这种痛苦。
这正是你的大脑在“举铁”,神经突触正在高强度地建立新的连接。这种不适感,是你正在突破认知边界的信号。
如果你在这个时刻按下了 AI 的生成键,它确实给了你一个完美的答案,就像剥好了的送到嘴边的虾肉。但你失去了什么?
你失去了咀嚼、消化、甚至感受饥饿的机会。你跳过了“构建心理模型”的过程,直接快进到了结果。
外包了痛苦,也就外包了成长的机会。
那么,我们该如何对抗这种“认知萎缩”?并不是要扔掉 AI 回归原始,而是要主动设计“认知摩擦”。
Sahil Bloom 基于个人洞察,为我们总结了 4 条适合技术人的自救法则:
原则: I write before I refine.(先写再润色,而不是先生成再修改。)
不要一上来就让 AI 写代码或写草稿。
强迫自己写出那个烂透了的初稿,强迫自己先在白板上画出架构图的草图。
因为 AI 只能基于概率生成“平均值”,只有你的“第一遍思考”才带有“方差”——也就是你的原创性(Originality)和个性。
下次写文档,不妨先自己写 300 字的大纲,再让 AI 补充;而不是让 AI 生成大纲,你来修改。
原则: I sit with problems.(让问题飞一会儿。)
遇到难题,不要通过条件反射式地 Alt+Tab 切到 与大模型聊天的页面。
允许自己困惑,允许自己焦虑,允许自己在那里发呆 10 分钟。
这种“滞后”是必要的。它给了你的大脑后台进程运行的时间(思考脑启动)。很多深刻的洞察,往往是在你“卡住”的时候涌现的。
不妨设定一个“无 AI 时间窗口”。比如每天上午的头 2 小时,强制断开 AI 助手,只靠自己的大脑工作。
原则: One kick 10,000 times.(不怕千招会,只怕一招精。)
AI 让我们能做 100 件事:能写前端、能写后端、能画图、能剪视频。但每件事我们都只能做到 60 分的平庸水平。
既然 AI 把广度的成本降到了零,那么深度就成了唯一的护城河。
试试利用 AI 帮你处理那些琐碎的、低认知的杂事,然后把节省下来的精力,全部投入到那个 1% 的核心领域中去。钻研到连 AI 都无法回答的深度。
原则: Stay anchored.(保持锚定。)
AI 没有身体,没有痛感,没有疲惫。
人类的直觉、审美和同理心,建立在我们肉身的经验之上,这是 AI 永远无法模拟的底色。
动起来!去面对面交流,去感受代码运行在真实物理设备上的延迟,去用身体感受世界。这些“肉身经验”是你作为人类的最后防线。
我们正在进入一个“分化”的时代。
区别在于边界的划分。
Your future is defined by what you refuse to let AI do.
(你的未来,取决于你拒绝让 AI 做什么。)
请守住你的“思考领地”。
我可以让 AI 帮我优化代码,但我决不允许它替我设计架构;
我可以让 AI 帮我润色文字,但我决不允许它替我定义观点。
在这个充满“灰度”和“平庸”的 AI 生成世界里,请保持你大脑的“色彩”和“锋利(Sharp)”。
Don’t become dull.
你的“戒断”计划
读完这篇文章,你是否也意识到了自己对 AI 的过度依赖?如果让你现在关掉 AI 助手,你能独立完成手头的工作吗?你打算如何找回自己的“认知摩擦”?
欢迎在评论区立下你的 Flag,或者分享你的“人机边界”思考!让我们一起守护大脑的锋利。
如果这篇文章戳中了你的痛点,别忘了点个【赞】和【在看】,并转发给身边那些“沉迷 AI”的朋友,给他们提个醒!
深度实战:构建“以人为本”的 AI 工作流
在 AI 原生开发中,我们同样强调:User 必须是机长,AI 只是副驾驶。
如何在利用 AI 提效的同时,还能迫使自己进行深度的架构思考?
如何在 Spec-Driven Development (SDD) 中,保留人类的“第一遍思考”权利,让 AI 只做执行者?
欢迎关注我的极客时间专栏《AI原生开发工作流实战》。
在这里,我们不教你如何偷懒,我们教你如何利用 AI 进行更高维度的认知进化。
扫描下方图片二维码,开启你的进化之旅。

你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?
继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!
我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。
目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.
作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/241022203423/
相关话题:https://www.cnsre.cn/tags/aws/
作为一名运维工程师,我们在日常工作中经常需要与 AWS 打交道。为了提高工作效率,我在 Mac 的 Zsh 中配置了一些实用的函数和别名。今天,我想分享这些配置,并通过实际演示,帮助大家更好地理解和使用它们。
ec2spot 快速筛选 Spot 实例当我们需要根据价格和配置选择合适的 EC2 Spot 实例时,可以使用以下别名:
|
|
演示:
在终端中输入:
|
|
这将列出所有具有 4 个 vCPU 和 16 GB 内存的实例类型,并按照 Spot 价格排序,方便我们选择性价比最高的实例。
ec2type 函数查看实例详细信息有时候,我们需要深入了解某个实例类型的配置细节。ec2type 函数可以帮助我们快速获取这些信息。
|
|
演示:
在终端中输入:
|
|
输出:
-------------------------
| DescribeInstanceTypes |
+--------------+----------------------+
| InstanceType| t3.large |
| DefaultVCpus| 2 |
| SizeInMiB | 8192 |
| NetworkPerformance| Up to 5 Gigabit|
| SupportedArchitectures| ["x86_64"] |
+--------------+----------------------+
通过这个输出,我们可以清楚地看到实例的 CPU、内存、网络性能和支持的架构等信息。
ssm 函数快速连接实例AWS Systems Manager(SSM)允许我们在不使用 SSH 密钥的情况下安全地连接 EC2 实例。下面的 ssm 函数简化了这一过程:
|
|
演示:
在终端中输入:
|
|
这将启动与指定实例的 SSM 会话,方便我们进行远程管理。
ec2 函数交互式选择并连接实例为了更方便地查找并连接运行中的 EC2 实例,我们可以使用 ec2 函数:
|
|
演示:
在终端中输入:
|
|
假设我们有以下运行中的实例:
匹配的实例:
1. i-0abcdef1234567890 Web-Server-1
2. i-0abcdef1234567891 Web-Server-2
然后,输入实例编号:
请输入实例编号以通过 SSM 连接: 1
系统将连接到 i-0abcdef1234567890 实例。
s3 函数 s3 函数提供了对 S3 的常用操作,包括上传、下载、删除和生成签名 URL。
|
|
演示:
|
|
输出:
文件已上传到 s3://my-bucket/file.txt。
演示:
|
|
输出:
文件已下载到 /local/path/file.txt。
演示:
|
|
输出:
文件 s3://my-bucket/path/to/file.txt 已删除。
演示:
|
|
输出:
文件 s3://my-bucket/path/to/file.txt 的限时5分钟公网访问
你可以使用以下命令通过 wget 下载文件:
wget -O file.txt "https://s3.cn-north-1.amazonaws.com.cn/my-bucket/path/to/file.txt?AWSAccessKeyId=..."
通过这些实用的 Zsh 配置,我们可以大大提升在命令行中操作 AWS 资源的效率。不再需要繁琐的命令输入,也不必记住复杂的参数。只需简单的函数调用,我们就能完成日常的运维任务。
如果你也有自己的小妙招,欢迎分享出来,一起交流,共同进步!
让我们一起高效运维,享受命令行的乐趣吧!
作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/241022203423/
相关话题:https://www.cnsre.cn/tags/aws/

课程主页: https://www.coursera.org/professional-certificates/aws-cloud-technology-consultant
当今时代,云技术已经成为了各行业不可或缺的一部分。越来越多的企业开始采纳云服务并寻求专业人员来获得技术支持。
我最近参加了Coursera上由亚马逊网络服务(AWS)提供的AWS云技术顾问课程,该课程为希望进入云技术领域的人士提供了一条无缝转型的道路。是时候与大家分享这个课程的亮点。
该课程为刚入行或希望转行的工程师准备,课程包含了从IT基础知识到AWS的各类技术必备领域。在掌握XMM技术及优秀案例的同时,助你成为合格的云技术顾问,各类银行、医药行业、制造及娱乐公司都在需求这种专业技能。
该课程的重点Syllabus涵盖以下主题:
如果你渴望成为一名云技术顾问,或者你的企业急需云技术专业人才,那么AWS云技术顾问系列课程绝对是不容错过的蓝海项目,总结价值极高,通过不同Cisco具,看到了AWS 广发系列的氛围以蜕变机会。欢迎大家点击该课程链接进行了解!
课程主页: https://www.coursera.org/professional-certificates/aws-cloud-technology-consultant
作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/240920163523/
相关话题:https://www.cnsre.cn/tags/lambda/
在许多数据分析和处理工作流中,数据会被定期上传到 Amazon S3 存储桶中的特定目录。为了确保数据同步任务的正常运行,我们需要监控这些目录是否按预期创建了新的子文件夹。如果某个目录下未生成新的子文件夹,可能意味着数据同步任务失败或出现了异常。这时,及时获取通知可以帮助运维人员迅速采取措施,避免数据丢失或延迟。
本文将介绍一个基于 AWS Lambda 的解决方案,具体步骤如下:
下面是实现上述功能的 Python 代码示例:
|
|
导入必要的库
|
|
boto3:AWS SDK for Python,用于与 AWS 服务交互。datetime 和 dateutil.tz:处理日期和时区。初始化 S3 资源和相关变量
|
|
YYYY/MM/DD/ 的前缀,用于定位当天的文件夹。定义需要检查的文件夹前缀
|
|
初始化 SNS 客户端
|
|
遍历每个前缀并检查子文件夹
|
|
list_objects_v2 方法列出指定前缀下的子文件夹。返回执行结果
|
|
arn:aws-cn:sns:cn-north-1:1234567890:s3-logs-monitoring)。Lambda 函数需要适当的权限才能访问 S3 和 SNS:
AmazonS3ReadOnlyAccess:允许读取 S3 存储桶内容。AmazonSNSFullAccess 或自定义策略,允许发布到指定的 SNS 主题。cron(0 0 * * ? *) 表示每天午夜触发一次)。错误处理:当前代码在异常情况下可能会中断。建议添加 try-except 块,捕获并处理可能的异常,确保 Lambda 函数的稳定性。
|
|
日志记录:利用 AWS CloudWatch Logs 记录详细的日志,便于后续的排查和监控。
参数化配置:将存储桶名称、前缀列表、SNS 主题 ARN 等参数化,通过环境变量或配置文件管理,增强灵活性。
性能优化:对于大规模存储桶,可以考虑使用分页机制(ContinuationToken)处理大量对象,避免漏检。
安全性:确保 IAM 角色只授予必要的最小权限,遵循最小权限原则,增强安全性。
通过结合 AWS Lambda、S3 和 SNS,我们可以轻松实现对 S3 存储桶中特定文件夹的监控,并在出现异常时及时发送通知。这种无服务器的解决方案不仅灵活高效,而且具有高度的可扩展性,适用于各种自动化监控和运维场景。希望本文提供的代码示例和详细解析能帮助您在实际项目中快速实现类似的功能。
作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/240920163523/
相关话题:https://www.cnsre.cn/tags/lambda/

作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/240917103351/
相关话题:https://www.cnsre.cn/tags/aws/
在AWS上进行多用户管理时,安全和灵活的权限控制至关重要。SSM(AWS Systems Manager)允许通过控制台或命令行接口远程管理EC2实例,而IAM(Identity and Access Management)则是定义用户和服务在AWS中的操作权限的核心组件。
使用IAM角色和标签,我们可以为不同的用户分配特定EC2实例的访问权限,确保他们只能访问与自己相关的资源。例如,如果你有10台EC2服务器,你可以使用标签将这10台服务器分为两组,让用户A和用户B分别只能访问自己的EC2实例。
直接为用户分配权限显得笨重且复杂,特别是在需要不断添加或移除资源时。通过为资源添加标签,我们可以通过IAM策略轻松控制用户的访问权限,这使得管理变得更加灵活和可扩展。
那么,如何做到这一点?我们可以通过简单几步配置IAM策略来实现这个目标。
要实现通过标签分配不同用户对特定EC2实例的SSM会话窗口权限,我们需要定义一个合理的IAM策略。这个策略应包含以下功能:
我们可以为这个需求设计如下IAM策略:
|
|
Project=test 的EC2实例的SSM会话。通过这样的标签条件,我们可以轻松将不同的实例分配给不同的用户。通过为EC2实例添加标签,我们可以方便地指定哪些资源属于哪个用户。例如,我们可以为实例添加标签 Project=test,这样具有相应权限的用户就可以通过SSM访问这些实例。
举例:
user=A。user=B。在IAM策略中,可以根据 aws:ResourceTag 条件语句控制用户的访问权限。这意味着,用户A将只能访问带有 user=A 标签的实例,而用户B只能访问带有 user=B 标签的实例。
通过IAM标签和策略,我们可以为不同用户分配特定资源的访问权限,实现精细化的权限控制。在AWS这样的复杂环境中,确保安全与灵活性并存至关重要。通过本文的策略示例和解释,我们可以轻松地为我们的用户提供合适的SSM访问权限,确保操作的安全性和可控性。
作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/240917103351/
相关话题:https://www.cnsre.cn/tags/aws/

作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/221205544069/
相关话题:https://www.cnsre.cn/tags/aws/
躺了好久,诈尸了。因为换了工作,所以比较忙一直没有时间去更新博客的内容(主要还是因为懒🤔)

话不多说 直接上干货。
最近在看费用的时候发现有很大一部分费用都是 cloudwatch log中存储了大量的数据,是因为ec2 将日志传输到了存储到了cloudwatch中。这个存储的多的查询日志的时候收费特别的高。另外一个是因为数据分析用途,大数据分析的同事如果想那到数据的话,还是存储在 S3 中是比较划算和方便的,一个是拿取数据比较方便,另外一个是S3 可以最归档存储,后面的大量数据可以分层储存,以此来降低费用。
如果你也想将你的cloudwatch 中日志组中的日志存储到S3中的话可以参考下这篇文章。

|
|
|
|
|
|
最后会以日期的目录将日志归档起来,以方便日后对归档文件进行梳理。

作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/221205544069/
相关话题:https://www.cnsre.cn/tags/aws/

作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210915154434/
相关话题:https://www.cnsre.cn/tags/故障集/
负责的项目下有一批 ubuntu 18.04 的服务器在 AWS 上,因为安全的问题,需要把内核从 5.3.0 升级到 5.4.0。
首次升级为测试环境测两台都是ubuntu 18.04 的版本 内核也都为5.3.0。第一台升级进展很顺利。软件更新,然后内核进行单独升级。等到需要重启的时候出现了问题。
无法挂载磁盘
首先遇到的第一个问题

解决思路:
升级内核导致 boot 空间越来越小,然后导致无法引导进入系统。因为之前遇到过boot空间占满的情况。但是那是在 kvm 的 vm 中,可以通过 VNC 进行链接修复。这在 aws 上怎么办?
解决方法:
一开始我选择了将改服务器的根磁盘取消挂载。然后挂载到同一可用区的其他服务器上,进行修复。因为磁盘格式的问题,始终挂载不上,为了避免浪费时间,只能以快照恢复的方式将根磁盘进行扩容。
以快照的方式恢复了回复,在快照恢复的过程中将根磁盘扩容的方法果然将服务器运行起来了。
后面就接着尝试进行内核升级….
内核升级数据库依赖报错?
具体内容如下:

解决思路:
这个问题,真的是没有思路。处理了很久,都没有解决这个问题。还希望有思路的能到指导下。
解决方法:
为了快速解决内核升级的问题,我将 mysql 以及相关的依赖都卸载掉了。
升级完重启失败?
这个问题也是最大的问题,最明显的表现就是。升级没有报错,但是升级完需要重启,服务器进行重启的时候无法进入操作系统。
此时已经是凌晨4点多钟了,已经很迷糊了。然后就把服务器恢复到升级内核前的样子。打算明天启动快照进行复现。


解决思路:
又是挂载失败?怎么又会遇到挂载失败呢?最后发现重启自动挂载磁盘的配置并没有按照官方的指示去做使用UUID的配置开启挂载盘符。从而系统会检测磁盘的过程中会检测到该错误。无法正常进如系统。
解决方法:
如果是物理机,或者是可以通过其他方式进行控制引导的话还可以修复。但是云主机怎么修复呢?只能去修复磁盘了
在云主机上有两种访问磁盘卷的方法
方法 1:使用 EC2 控制台
(摘自 AWS 文档)
如果您为 Linux 启用了 EC2 串行控制台,则可以使用它来排查受支持的基于 Nitro 的实例类型问题。串行控制台可帮助您排查启动问题、网络配置和 SSH 配置问题。串行控制台无需网络连接即可连接到您的实例。您可以使用 Amazon EC2 控制台或 AWS 命令行界面 (AWS CLI) 访问串行控制台。
在使用串行控制台之前,请在账户层面授予对串行控制台的访问权限。然后,创建 AWS Identity and Access Management (IAM) 策略,授予对 IAM 用户的访问权限。此外,每个使用串行控制台的实例都必须至少包含一个基于密码的用户。如果您的实例无法访问,并且尚未配置对串行控制台的访问权限,请按照方法 2 中的说明进行操作。有关为 Linux 配置 EC2 串行控制台的信息,请参阅配置对 EC2 串行控制台的访问权限。
注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
方法 2:挂载到其他实例上
创建一个临时救援实例,然后将您的 Amazon Elastic Block Store (Amazon EBS) 卷重新挂载到该救援实例上。从该救援实例中,您可以将 GRUB 配置为使用以前的内核进行启动。
**重要提示:**请勿在实例存储支持的实例上执行此操作。由于此恢复方法需要首先停止然后再重启实例,该实例上的任何数据都将丢失。有关更多信息,请参阅确定实例的根设备类型。
lsblk
# 输出如下:
xvda 202:0 0 20G 0 disk
└─xvda1 202:1 0 20G 0 part /
xvdb 202:16 0 100G 0 disk
xvdf 202:80 0 15G 0 disk
└─xvdf1 202:81 0 15G 0 part # 该磁盘为故障集服务器根磁盘
查看磁盘格式
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
xvda
└─xvda1 ext4 cloudimg-rootfs d32458a7-7f4c-415f-9a66-b579f14fb82d /
xvdb ext4 eb0e325a-471c-4a99-a9be-a3ee296c2405
xvdf
└─xvdf1 ext4 cloudimg-rootfs d32458a7-7f4c-415f-9a66-b579f14fb82d
挂载磁盘
sudo -i
mount /dev/xvdf1 /mnt
然后查看挂载目录,发现根磁盘已经挂载到了mnt下

查看配置文件
ubuntu@ip-10-0-20-27:~$ cat /etc/fstab
LABEL=cloudimg-rootfs / ext4 defaults,discard 0 0
/dev/nvme0n1 /data ext4 defaults 0 0
查看官网挂载文档如下:
(摘自AWS 官方文档)
要在每次系统重启时附加附加的 EBS 卷,可在 /etc/fstab 文件中为该设备添加一个条目。
您可以在 /dev/xvdf 中使用设备名称(如 /etc/fstab),但建议改为使用设备的 128 位通用唯一标识符 (UUID)。设备名称可以更改,但 UUID 会在整个分区的使用寿命期间保留。通过使用 UUID,您可以减少系统在硬件重新配置后无法启动的机会。有关更多信息,请参阅识别 EBS 设备。
重启后自动附加附加卷
(可选)创建 /etc/fstab 文件的备份,以便在编辑时误损坏或删除此文件时使用。
[ec2-user ~]$ sudo cp /etc/fstab /etc/fstab.orig
使用 blkid 命令查找设备的 UUID。记下要在重新启动后挂载的设备的 UUID。在下一步中您将需要用到它。
例如,以下命令显示有两个设备挂载到实例上,并显示了两个设备的 UUID。
[ec2-user ~]$ sudo blkid
/dev/xvda1: LABEL="/" UUID="ca774df7-756d-4261-a3f1-76038323e572" TYPE="xfs" PARTLABEL="Linux" PARTUUID="02dcd367-e87c-4f2e-9a72-a3cf8f299c10"
/dev/xvdf: UUID="aebf131c-6957-451e-8d34-ec978d9581ae" TYPE="xfs"
对于 Ubuntu 18.04,请使用 lsblk 命令。
[ec2-user ~]$ sudo lsblk -o +UUID
使用任何文本编辑器(如 /etc/fstab 和 nano)打开 vim 文件。
[ec2-user ~]$ sudo vim /etc/fstab
将以下条目添加到 /etc/fstab 以在指定的挂载点挂载设备。这些字段是 blkid(或用于 Ubuntu 18.04 的 lsblk)返回的 UUID 值、挂载点、文件系统以及建议的文件系统挂载选项。有关必填字段的更多信息,请运行 man fstab 以打开 fstab 手册。
在以下示例中,我们将 UUID 为 aebf131c-6957-451e-8d34-ec978d9581ae 的设备挂载到挂载点 /data,然后我们使用 xfs 文件系统。我们还使用 defaults 和 nofail 标志。我们指定 0 以防止文件系统被转储,并且我们指定 2 以指示它是非根设备。
UUID=aebf131c-6957-451e-8d34-ec978d9581ae /data xfs defaults,nofail 0 2
注意
如果您要在未附加此卷的情况下启动实例(例如,将卷移动到另一个实例之后),nofail 附加选项允许该实例即使在卷附加过程中出现错误时也可启动。Debian 衍生物 (包括早于 16.04 的 Ubuntu 版本) 还必须添加 nobootwait 挂载选项。
要检查条目是否有效,请在 /etc/fstab 中运行以下命令以卸载设备,然后挂载所有文件系统。如果未产生错误,则说明 /etc/fstab 文件正常,您的文件系统会在重启后自动挂载。
[ec2-user ~]$ sudo umount /data
[ec2-user ~]$ sudo mount -a
如果收到错误消息,请解决文件中的错误。
警告
/etc/fstab 文件中的错误可能显示系统无法启动。请勿关闭 /etc/fstab 文件中有错误的系统。
如果您无法确定如何更正 /etc/fstab 中的错误并且您在此过程的第一步中创建了一个备份文件,则可以使用以下命令从您的备份文件还原。
[ec2-user ~]$ sudo mv /etc/fstab.orig /etc/fstab
查看修改日期核对修改时间

问题都解决了。接下来继续升级内核吧。
sudo apt-get install linux-image-5.4.0-1055-aws

等待重启查看

终于成功了。。。
were encountered while processing作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210915154434/
相关话题:https://www.cnsre.cn/tags/故障集/

作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210531100355/
相关话题:https://www.cnsre.cn/tags/aws/
sudo yum install amazon-cloudwatch-agent
配置文件
|
|
|
|
|
|
作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210531100355/
相关话题:https://www.cnsre.cn/tags/aws/

作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210517344530/
相关话题:https://www.cnsre.cn/tags/zabbix/

修改大小后保存

lsblk 查看当前设备的磁盘编号

df -T -H 查看扩容前的空间大小并确定磁盘格式

growpart /dev/nvme0n1 1 把扩容的空间挂载到磁盘上

centos7执行划分空间命令
sudo xfs_growfs -d / 把空闲的空间划分至 /
centos6执行划分空间命令
resize2fs /dev/nvme0n1p1

df -h 查看验证

作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210517344530/
相关话题:https://www.cnsre.cn/tags/zabbix/

作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210514620165/
相关话题:https://www.cnsre.cn/tags/aws/
ALB 负载均衡 RGC-Dev-ALB.xxx.cn-north-1.elb.amazonaws.com.cn 解析到2个IP 54.223.xxx.xx和52.81.xxx.xx, 发现每2次请求会失败一次,在进一步测试抓包发现没有收到52.81.xxx.xxx的返回信息。
随后检查ALB建立在两个子网(subnet-a1xxxxx和subnet-f3xxxxx)
其中54.223.xxx.xx在subnet-f32xxxx中,子网路由表rtb-49xxxx中0.0.0.0/0 指向IGW,因此客户端可以主动访问到54.223.xxx.xx。
52.81.xxx.xx在subnet-a1xxx中,子网路由表rtb-24xxx中0.0.0.0/0指向了nat gateway(nat-0axxxxxxxxxx), 这将导致客户端无法连接到52.81.xxx.xx, 因此也不会收到52.81.xxx.xx的回包。
请知晓,对于面向公网的ALB,需要将ALB部署在公有子网中, 即子网路由表0.0.0.0/0需要指向IGW。
1) 修改子网路由表rtb-24xxx, 将0.0.0.0/0指向igw, 请知晓, 这个修改将影响所有关联了rtb-24xxx这个路由表的子网,
如果对应子网中的资源没有公网地址,修改完成后将失去访问公网的能力,此外对于子网中有公网地址的资源,将直接从公网路由可达。
2) 修改ALB的子网,可以在EC2的控制台找到“负载均衡” ,选择对应的ALB, 在“描述” > “基本配置” >“可用区” > 点击“编辑子网”, 将subnet-a1xxx 修改为同AZ的公有子网(即路由表0.0.0.0/0指向igw的子网)
作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210514620165/
相关话题:https://www.cnsre.cn/tags/aws/

作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210414131058/
相关话题:https://www.cnsre.cn/tags/故障集/
在我们的生产环境中,我们制作了一个健康检查页面,并通过脚本去监控他的健康状态,可是在前天(2020-5-30 周六)下午 18:50 左右的时候收到告警健康检查页面故障,等我登录服务器排查故障的时候发现是curl命令报错,报错的内容为:
|
|
在通过我今天上午的测试,我发现AWS EC2为:Linux 、Linux2 的操作系统不能够正常使用,在AWS EC2 -Centos 7.7、阿里云以及物理机房中测试是没有问题的。
经过查看报错信息,发现是由于SSL握手的时候证书验证错误导致的,以下是排查的步骤:
|
|

更新证书链,将过期的证书链信息去除,尝试是否可以正常访问:
https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_server-certs.html
作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210414131058/
相关话题:https://www.cnsre.cn/tags/故障集/

作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210413131020/
相关话题:https://www.cnsre.cn/tags/故障集/
2020年7月13日一大早收到告警,测试环境数据库CPU告警。

出现这种cpu 100%的问题,一般都是因为sql性能问题导致的。
主要表现于 cpu消耗过大,有慢sql造成、慢sql全表扫描,扫描数据库过大,内存排序,队列等等
并发现写入相对于查询来说比较高(这是一个关键点)
有了大概的思路下边开始排查吧
show full processlist;

发现有大量的语句状态为 sending data sending data: sql正从表中查询数据,如果查询条件没有适当索引,会导致sql执行时间过长。
mysql> show variables like 'slow_query%';
+---------------------+----------------------------------------------+
| Variable_name | Value |
+---------------------+----------------------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /rdsdbdata/log/slowquery/mysql-slowquery.log |
+---------------------+----------------------------------------------+
2 rows in set
mysql> show variables like 'slow_launch_time';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| slow_launch_time | 1 |
+------------------+-------+
1 row in set
看到慢日志已经开启
登录aws cloudwatch查看慢日志发现大部分为这条sql
# User@Host: admin[admin] @ [10.0.11.12] Id: 2302
# Query_time: 3.602910 Lock_time: 0.100585 Rows_sent: 2 Rows_examined: 4454
SET timestamp=1594629311;
SELECT a.enum_value,a.enum_value
FROM external_mapping a
LEFT JOIN external_command_key b ON a.command_id=b.id
LEFT JOIN external_command_options c ON a.options_id=c.id
LEFT JOIN external_command_key d ON a.command_id=d.id
LEFT JOIN category h ON a.category_id=h.id
where 1=1
AND b.code='Common.Status.Event'
AND c.code='Common.Setting.Rm4Valve'
AND d.code='Rm4_Valve'
AND a.platform_id=119
AND h.cname = 'TT';
mysql> show OPEN TABLES where In_use > 0;
#查看是否有锁表
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
#查看正在锁的事务
Empty set
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
#查看等待锁的事务
Empty set
暂时没有看到锁表的情况
mysql> show global status like 'Qca%';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 134199912 |
| Qcache_hits | 0 |
| Qcache_inserts | 0 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 44950579 |
| Qcache_queries_in_cache | 0 |
| Qcache_total_blocks | 1 |
+-------------------------+-----------+
mysql> show engine innodb status;
通过上边一系列的查询,发现以下几个问题
描述
慢sql:查看到sql语句执行时间过长。
全表扫描:这个策略用于检查百分比((Handler_read_rnd+Handler_read_rnd_next)/(Handler_read_first+Handler_read_key+Handler_read_next+Handler_read_prev+Handler_read_rnd+Handler_read_rnd_next))。 这是一个需要读取全表内容的操作,而不是仅读取使用索引选定的部分。 通常使用小型查找表执行,或者在具有大型表的数据仓库情况下执行而其中所有可用数据都被聚合和分析。
建议
慢sql: 根据sql 检查语句并进行索引优化。
全表扫描:应该尽量保持这个值尽可能的低。尝试隔离那些不使用索引的查询。一旦识别了那些查询,请创建适当的索引或重写查询以使用索引。MySQL 有一个很棒的功能 - 慢速查询日志,它允许你记录所有需要超过指定时间运行的查询。慢速速查询日志可用于识别需要很长时间才能完成的查询。
描述
当服务器启动后,(max_used_connections)变量将提供一个基准,以帮助你确定服务器支持的最大连接数量。 它还可以帮助进行流量分析。
建议
如果需要支持更多的连接,应该增加变量 max_connections 的值。MySQL 支持的最大连接数量是取决于给定平台上线程库的质量、可用 RAM 的数量、每个连接可使用多少 RAM、每个连接的工作负载以及所需的响应时间。
缓存描述
这个策略用于检查查询缓存命中率(Qcache_hits/(Qcache_hits + Com_select))。 MySQL 查询缓存将缓存一个分析的查询及其整个结果集。 当你有许多小型的查询返回小型数据集时,这是非常好的,因为查询缓存将允许返回结果立即可供使用,而不是每次发生时都重新运行查询。
建议
理想情况下,查询缓存的命中率应该接近 100%。MySQL 的查询缓存是一项强大的技术,并且在管理良好的情况下可以显着提高数据库的吞吐量。一旦你的应用程序被创建,你可以看看它如何使用数据库,并相应地调整查询缓存。有足够大的缓存,避免碎片化和排除大型的查询,你就应该能够保持极高的缓存命中率,并享受出色的性能。
根据上边发现的问题进行了配置的修改
此问题联系开发进行索引优化,减少全表扫描。
修改配置 max_user_connections 我这边设置的为1000


正在准备空闲时间重启RDS的时候,开发那边有了进展。
开发同事把缓存写错了!!!!😳😳😳
理下业务
程序暴露接口给测试部门,测试部门在上报了50W条数据,开发这边程序有没有添加数据过滤(过滤掉垃圾数据),并且…开发在程序中写错了缓存。所以导致相对于读取来说写入较高。因为在缓存查询不到想到的数据,就进行了全表扫描,继而出现了大量进程以及连接数队列等等。。
处理问题可以,别主动背锅。。。在接手数据库的时候最好检查下配置,了解数据库的情况,在出现问题的时候能够最快速的定位解决问题。
另外,经过此次的故障处理,加固了对业务以及数据库一些参数的理解。
作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210413131020/
相关话题:https://www.cnsre.cn/tags/故障集/

在AWS上使用CentOS 7创建EC2实例时,设置时区无效。本文将分析原因并提供解决方案。
|
|
|
|
我们会发现时区是固定不变的,无论我们通过修改 localtime 还是通过 timedatectl 修改,都无效。经过一番搜索,我发现是由于 tzdata 数据库老旧导致,升级即可解决。
另外也可以通过 TZ 环境变量来设置,这是操作系统默认支持的方式。
|
|
或者
|
|
感谢 LinuxQuestions 提供的帮助。
文章链接
https://www.cnsre.cn/posts/210312112259/

在 基于Terraform在AWS ECS中构建Jenkins持续集成体系 一文中, Alliot 采用了 EFS 作为 Jenkins 容器的数据卷,直接挂载了 /var/jenkins_home 目录。
正如评论区提到的, 我们在使用 bursting 模式的 EFS 时,遇到了 IO 性能的问题, 虽然 master + slave 架构的 Jenkins 将构建任务分发到了 slave 节点,减少了 master 节点的压力,但是在启动构建任务时, master 节点依然会有大量的 IO 操作, 这个时候会导致 bursting 模式下的 EFS 瞬间打光 Credit 从而导致整个 master 挂掉。当然,我们可以使用 Provisoning 模式缓解性能问题,但其价格又非常贵,性价比不高。
好在从今年(2024)的一月开始, AWS ECS 的 Fargate 支持使用 EBS 卷作为 Volume 了。 目前官网的文档还比较分散,这里小记一些需要注意的点。