IT技术博客大学习 共学习 共进步

系统运维

共 606 篇文章

IT 2022-02-03 13:16:36 / 累计浏览 4,784

iTerm2 (Mac Terminal) 清空当前屏幕内容

这篇讲的是 Mac 终端用户常遇到的一个“洁癖”小问题:执行 `clear` 命令后,屏幕看似干净,但向上滚动依然能看到历史输出,而且在搜索时,之前的内容其实也还在。 文章直接点明了 `clear` 命令的这两个局限性,并给出了一个更彻底的解决方案——使用 iTerm2 自带的快捷键 `Command + K`。这个操作能真正清空屏幕缓冲区,让历史记录在滚动和搜索时都彻底消失。 如果你经常在终端里工作,希望获得一个完全空白、不受旧内容干扰的工作界面,这个小技巧能立刻提升你的使用体验。

IT 2021-05-28 08:35:26 / 累计浏览 2,514

这几年在存储上犯的错

这篇讲的是作者从亲身经历出发,分享这些年在存储和运维上踩过的真实大坑。文章从一起线上数据误删事件切入,没有说教,而是直接讲述了几个让作者“想死的心都有”的故障现场:比如用错误配置上线,瞬间拖垮了整个数据库集群;在恢复误删数据时,不慎将 DROP TABLE 命令也一并执行,导致只恢复出了一个豆列;以及在进行数据库主从切换时,因与同事短暂交谈分心,在从库同步未追平的情况下就进行了操作,最终引发数据冲突。 每个案例都像一部微型灾难片,详细描述了错误的决策瞬间、连锁反应以及在巨大精神压力下的补救过程。作者坦诚地剖析了背后的直接原因,例如对配置项的误解(SET GLOBAL SQL_LOG_BIN)、脚本操作的风险以及流程中的侥幸心理。 文章的结尾给出了沉痛而实用的教训:“备份不做,日子甭过”,并强调了任何危险操作都应确保可回滚,工具应该比人更可靠。它并非一篇技术方案,而是一面镜子,照见了运维工作中那些不可避免的“人为因素”,也体现了团队在危机中相互支持的宝贵文化。对于每一位需要和线上系统打交道的工程师,这都是一次难得的经验共情。

IT 2021-05-24 22:42:27 / 累计浏览 2,096

CentOS 在线升级 Oracle Linux 的方法

这篇文章讲的是如何将正在运行的 CentOS 系统在线、平滑地升级为 Oracle Linux,尤其适合因 CentOS 停止维护而寻找迁移路径的运维人员。作者从实际操作出发,详细拆解了六个关键步骤:先用 rpm 强制安装 Oracle Linux 的核心发布包与红帽发布包,接着移除原有的 CentOS 相关包与 epel 源,再安装 Oracle Linux 专属的 release 包以完成源切换。随后,系统便可通过 yum 正常更新。对于需要高性能内核的场景,文章最后还提供了可选方案——安装 Oracle 打造的 UEK 内核。整个流程的核心在于巧妙利用 rpm 与 yum 工具,在不重装系统的前提下,将软件仓库彻底切换至 Oracle Linux,从而实现平滑过渡并持续获得安全更新与技术支持。

IT 2021-02-13 23:28:58 / 累计浏览 2,318

AIOps在美团的探索与实践——故障发现篇

这篇讲的是美团如何将AIOps(智能运维)落地到故障发现环节。文章从自动化运维的瓶颈说起,指出传统基于固定规则的监控在海量、多变的指标面前力不从心,而AIOps通过机器学习从数据中自动学习规则,是更进一步的解决方案。 美团规划了一条从单点能力到流程化、免干预的AIOps演进路径,并强调了SRE、开发与算法三类团队的紧密协作。他们首先聚焦于故障管理体系中的“故障发现”,因为它直接影响告警的准确性和效率。 核心实践在于解决海量时序指标的自动分类问题。团队发现,不同形态的指标(如周期型、平稳型)需要不同的告警策略。通过探索,他们最终采用卷积神经网络(CNN)对指标进行自动分类,准确率超过95%,从而能为指标智能匹配合适的异常检测算法。这不仅降低了人工配置成本,也提升了告警信噪比,为后续的告警收敛、故障定位等环节奠定了智能化基础。

IT 2020-02-01 16:51:06 / 累计浏览 2,462

Centos 7 SSH连接超时自动断开的解决方案

这篇讲的是在Centos 7服务器上,SSH连接因闲置超时频繁自动断开,影响操作效率的问题。 作者从自身在Centos 7下安装软件时的困扰出发,定位到问题根因在于SSH服务端的连接保活机制。当客户端一段时间无数据交互,服务端会主动切断连接。解决方法很直接:编辑SSH守护进程的配置文件`/etc/ssh/sshd_config`,调整两个关键参数。将`ClientAliveInterval`从默认的0(禁用)改为60秒,意味着服务端会每60秒向客户端发送一次保活信号;同时将`ClientAliveCountMax`保持为3次,即如果连续3次(共180秒)都没有收到客户端响应,才会真正断开连接。 完成修改后,执行`systemctl restart sshd`重启服务使其生效。此后,即使长时间不操作终端,连接也能保持稳定,不再被意外中断。这个调整方案简单有效,对于需要长时间保持SSH会话的运维或开发场景非常实用。

IT 2020-02-01 16:49:42 / 累计浏览 2,213

centos查找大文件

这篇讲的是在CentOS系统中快速定位那些悄悄吃掉磁盘空间的大文件。作者直接切入实用场景,给出了三个层层递进的命令技巧。 首先,文章介绍了如何用 `find` 命令高效找出系统中所有超过200MB的文件,这是解决磁盘告警问题的第一步。接着,针对“不确定是哪个目录占用空间”的常见困境,用 `du -h --max-depth=1` 命令可以直观地查看当前目录下每个子目录的磁盘占用情况。最后,为了快速锁定“元凶”,文章还展示了如何用管道将 `du` 的输出通过 `sort -n` 进行数值排序,让占用空间最大的目录一目了然。 整个过程没有复杂理论,直接给出了可复制粘贴的解决方案,非常适合系统管理员和运维人员在日常维护中快速上手操作。

IT 2020-02-01 16:45:03 / 累计浏览 2,313

游戏引擎中的资源生命期管理问题

这篇讲的是游戏引擎开发中资源生命期管理的架构演进与权衡。作者从团队实际遇到的问题出发:最初依赖Lua的垃圾回收,但其触发时机不可控,易造成图形渲染卡顿;而随着场景复杂化,单帧内过多的资源API调用甚至导致渲染后端崩溃。 为应对这些问题,团队先后尝试了经典的引用计数方案,但作者认为在Lua框架与内存受限的移动设备上,单纯基于“是否还有引用”来决定资源释放并非最优解。他将资源分为两类:一类是可从磁盘重新加载的IO资源(如贴图),另一类是依赖上下文、难以重建的运行时生成资源。 针对第一类资源,作者提出不应被引用关系束缚,而应遵循LRU原则,允许引擎随时释放长期未用的内存。对于第二类资源的处理灵感则来自imgui:采用“每帧主动创建”的方式来规避复杂的重建回调,再将结果缓存。这样一来,所有资源都可以统一由LRU策略管理,在内存压力下安全淘汰。文章梳理了从全量保留、Lua GC、引用计数到统一LRU缓存的完整思考路径,展现了从具体约束中提炼通用架构的工程智慧。

IT 2020-02-01 15:01:57 / 累计浏览 2,372

TPS及计算方法

这篇围绕TPS(每秒事务数)及其计算方法展开。文章首先明确了TPS的基本定义,并通过一个简单示例说明了如何基于事务数量和响应时间(节拍)来计算。 接着,文章引入了经典的利特尔法则,并详细解释了其在生产环境中的应用逻辑。作者通过两个生动的示例——一个是关于并发服务器容量规划,另一个是排队问题——展示了如何利用该法则推导系统行为,指出提升性能的关键在于增加并发处理量或缩短处理时间。 更进一步,文章探讨了在负载模型中影响TPS的两个关键因子:响应时间和节拍。通过具体示例对比了当节拍为零与不为零时,TPS受谁主导,进而推导出负载模型中利特尔法则的扩展公式:系统内平均用户数 = (平均响应时间 + 思考时间)× 吞吐量。最后给出了一个具体的计算实例,清晰地呈现了各参数之间的关系。 掌握这些概念,对于准确进行性能评估与容量规划至关重要。

IT 2020-02-01 14:36:16 / 累计浏览 2,450

PHPTS:一键免费搭建 Nginx + PHP + MySQL + Redis + Memcached 网站、APP、小程序服务器端运行环境

这篇讲的是如何在 Windows 上快速搭建网站服务器环境。传统方式需要手动安装和配置 Nginx、PHP、MySQL 等一堆组件,过程繁琐且容易出错,尤其是官方 Nginx for Windows 版本在连接数和性能模型上限制明显,往往只能用于测试。 文章介绍的 PHPTS 软件给出了一个“一键搞定”的方案。它将上述组件集成为一个安装包,并对关键的 Nginx 进行了深度优化——采用了 Windows IOCP 模型并支持多进程,将连接数上限从官方版本的 1024 大幅提升至 32768,使其在 Windows 上也能胜任生产环境。这解决了长期困扰 Windows 开发者的性能痛点。 除了作为本地开发环境,软件还定位为边缘计算平台。它可以运行在各类本地设备上,利用本地算力完成 AI、音视频处理等任务,减少对公有云的依赖,并支持与云服务组建混合云。对于需要在 Windows 下快速启动 Web 服务或探索本地化部署的开发者来说,这提供了一个免费且开箱即用的选择。

IT 2019-08-11 11:31:51 / 累计浏览 2,398

系统工程师的自我修养- sed篇

这篇文章系统地梳理了传统UNIX环境下的sed工具,从底层原理讲起,特别强调了其基于pattern space逐行处理的核心机制,与GNU版本做了区分。作者清晰地界定了sed与awk的适用场景:sed长于行内的强大替换与编辑,适合做“文本编辑器”;而awk更擅长列的提取与格式化,是“信息处理器”。 文章没有堆砌所有命令,而是直接从实战出发。在讲解了如何用SELECTION(行号、正则)精确选取目标文本后,通过一系列电话簿、路径、配置文件的示例,演示了打印(-p)、插入(i)、追加(a)和替换(c)这些最常用的操作。作者的讲解紧密结合了sed“读取-处理-输出”的工作流程,比如在解释`-n`选项时,就回溯到默认输出pattern space的原理,让读者知其然更知其所以然。 整体来看,这是一篇不求大而全,但求小而精的实践指南。它把sed的核心骨架和最实用的“几把刷子”清晰地呈现出来,非常适合想要快速掌握sed行处理精髓的系统工程师作为入门和速查参考。

IT 2019-06-28 13:25:29 / 累计浏览 1,793

Linux 运维:系统服务管理

这篇讲的是Linux服务器运维中那些令人头疼的“重复学习”时刻——系统服务管理的方式总是随着技术演进而变迁。作者从自己给老款MacBook Pro安装Ubuntu 19.04桌面版出发,先吐槽了新版apt命令依然不够顺手,并演示了如何用aptitude替换掉默认的vim-tiny、补装net-tools这些桌面版缺失的基础工具。 文章的重点其实落在CentOS的服务管理上。作者并排展示了两种新老方式的实操命令:一边是逐渐被淘汰的SysV风格,用`chkconfig`查看、关闭或删除服务;另一边是主流的systemd,通过`systemctl`来列出、禁用服务状态。他甚至演示了如何暴力删除阿里云相关服务的残留文件,再用`reset-failed`清理干净——这恰恰是运维中常遇到的“清理战场”场景。 如果你正被服务器上那些幽灵般的服务困扰,或者面对不同发行版时对管理命令感到混乱,这篇文章给出的对比和具体步骤,就像一份可以直接“照着做”的速查手册。它不空谈理论,而是把折腾的过程和关键命令直接摊开,对实际排障很有参考价值。

IT 2019-06-27 13:56:47 / 累计浏览 2,503

如何在 Linux 上复制文件/文件夹到远程系统?

这篇讲的是 Linux 用户日常一定会遇到的场景:怎么把本地的文件或文件夹高效地复制到远程服务器上。作者没有停留在只讲最常用的 `scp`,而是系统梳理了四种主流方案——`scp`、`rsync`、`pscp` 和 `prsync`,并详细解释了它们各自的设计思路和适用情况。 比如,`scp` 作为原生命令,安全可靠,适合快速单次传输;`rsync` 则胜在支持增量同步与断点续传,尤其适合大文件或经常变动的目录。而 `pscp` 和 `prsync` 是进阶工具,专门解决“同时把文件推送到多台服务器”的批量运维需求,提供了超时控制等实用特性。文章不仅列出了这些差异,还给出了可直接复制的命令行示例,从基础用法到多文件、多目录的复制场景都有覆盖。 作者强调这些方法都经过了实际环境的测试,确保读者拿来就能用。对于需要在不同生产环境中选择合适传输工具的开发者或运维人员来说,这份整理提供了一个清晰的决策参考。

IT 2019-05-01 20:02:20 / 累计浏览 1,898

系统管理员的 7 个 CI/CD 工具

这篇讲的是,当运维团队需要像开发一样熟练运用 CI/CD 时,该如何选择趁手的工具。作者从运维的视角出发,对比了七款主流工具的设计哲学与适用场景。 文章并没有停留在泛泛而谈,而是深入到具体工具的细节。例如,它指出 GitLab CI 凭借 YAML 声明式管道和 Auto DevOps 功能,在 Forrester 评估中名列前茅;GoCD 的杀手锏是“价值流视图”,适合需要串联多团队流水线的复杂组织;而像 Travis CI 这样的 SaaS 服务,则为开源项目提供了几乎零成本的起点。对于 Jenkins 这样的“元老”,文章既承认了其配置复杂的历史包袱,也点出了 Jenkins X 等项目向云原生转型的新方向。 作者的核心观点是,这些工具模型各异,但目标一致:通过自动化节省时间、提升可靠性。文章没有给出唯一答案,而是提供了一份详尽的“选型地图”。它帮助系统管理员理解,选择工具不仅要看功能列表,更要匹配团队的成熟度、协作流程以及对“基础设施即代码”的接纳程度。读完后,你可以根据自身团队的现状,找到那个能最快帮你“搭建起脚手架”的起点。

IT 2019-01-01 20:06:40 / 累计浏览 2,755

如何在 Linux 上安装设备驱动程序

这篇讲的是,那些从 Windows 或 macOS 切换到 Linux 的朋友,面对设备驱动安装时可能会懵——因为 Linux 上这事儿确实更复杂。作者从三种根本原因出发:Linux 发行版种类繁多、大多数开源驱动已内置、以及不同发行版对闭源驱动的许可策略不同,清晰地解释了为什么一个通用的安装指南很难实现。 文章没有停留在抱怨上,而是给出了两种切实可行的解决方案:一种是通过 Ubuntu 的“附加驱动”等图形化向导进行傻瓜式安装;另一种是针对进阶用户的命令行途径,包括添加软件仓库、更新源并安装,甚至涉及手动下载源码编译。作者还贴心地列举了 `lspci`、`dmesg` 和 `lsmod` 等关键命令,教你在动手前如何高效地检查系统是否已存在或加载了目标驱动,避免重复劳动。 整篇文章像一份务实的路线图,它先帮你理解问题的来龙去脉,再提供从简到难的工具选择,最后附上了必不可少的诊断步骤。对于想踏足 Linux 但又怕被驱动问题劝退的新手来说,这是一份很清晰的入门指引。

IT 2019-01-01 20:01:48 / 累计浏览 1,710

Python检查和同步本地时间北京时间

这篇讲的是如何用Python快速检查与同步本地服务器时间到北京时间。作者从一个实际运维痛点出发:当本地时间与标准时间偏差较大时,传统的NTP时间同步过程会非常缓慢,影响服务。 为了解决这个问题,文章提出了一种轻巧的替代方案:利用大型网站(如百度、淘宝)响应的HTTP头中包含的Date时间戳。因为这些网站的时间通常非常准确,我们可以将它们作为一个可靠的时间源。核心思路就是通过代码获取这个GMT时间戳,将其解析并转换为北京时间,然后直接设置系统时钟。 具体实现上,代码使用了Python标准库urllib2以确保兼容性,而没有依赖需要额外安装的requests库。它封装了两个主要功能:检查本地时间与互联网时间的偏差,以及直接校准本地时间(包括将系统时间同步到硬件时钟)。作者提供了完整的脚本,并在CentOS 7.4的Python 2.7环境下验证通过。 这个方案虽然简单,但对于网络受限或对NTP同步速度有要求的场景,提供了一种快速、有效的应急选择。

IT 2018-07-05 13:35:26 / 累计浏览 2,249

对SaaS业务的几点感受

这篇分享的是作者从C端产品转型到B端SaaS业务后,经过一年实践所得的核心观察。作者发现,SaaS产品与C端产品存在本质差异,主要体现在四个方面。 首先,SaaS产品面对的角色和流程链条远比C端复杂。产品需要同时考虑商家内部不同岗位(如老板、运营、财务)的权限与协作,以及最终的消费者,设计思考维度显著增加。其次,产品启动期漫长。不同于C端可以靠一个“爆点”快速迭代,SaaS需要先夯实那些用户不会单独提出但必不可少的“底座”功能,非常考验团队的耐心和扎实程度。 第三,SaaS产品通常不具备强网络效应。一个商家选择哪款软件,很少会直接影响其他商家的选择。这决定了业务必须更注重全链条的服务和老用户的深度维护。最后,也是因此,SaaS业务离不开强烈的销售意识。产品设计本身就需要思考如何向付费者清晰地传递价值,这与纯粹依赖流量的C端逻辑大相径庭。 作者以一位“行业新人”的视角,坦诚地将这些来自一线的、关于业务模式与产品设计复杂性的观察总结出来,揭示了SaaS赛道需要长期深耕、心态稳健的本质。

IT 2018-07-05 10:15:29 / 累计浏览 2,138

使用 syslog-ng 可靠地记录物联网事件

面对日益增多的物联网设备,可靠地记录和监控其运行事件,是排查问题与保障安全的基础。这篇文章以开源日志守护程序 syslog-ng 为例,详解了如何构建一个高效、可移植的集中式日志方案。 作者从日志的基础概念讲起,重点剖析了 syslog-ng 的四大核心能力:从多样来源(如系统日志、文件、管道)收集信息;通过解析器、重写等功能处理日志;基于内容进行智能过滤与路由;最终将日志保存至文件或 Elasticsearch、Kafka 等大数据平台。文章特别强调了将非结构化日志转换为键值对格式的价值,这能极大提升后续分析的效率。 更值得关注的是 syslog-ng 在真实物联网场景中的广泛应用。文中提到,其最流行的版本(1.6)竟运行在超过 1 亿台亚马逊 Kindle 设备上,同时也被用于宝马电动汽车、开源路由器和工业测量设备中。对于资源受限或异构的嵌入式环境,syslog-ng 的高性能与多架构支持显得尤为实用。 总结来看,syslog-ng 通过其灵活的架构,将系统日志、应用数据乃至测量信息统一收集和处理,为物联网设备提供了从边缘到中心的可靠日志管道,有效支撑了监控、安全与数据分析的需求。

IT 2018-03-12 17:31:12 / 累计浏览 2,033

如何免费的让网站启用HTTPS

作者分享的是他将个人技术博客CoolShell从HTTP升级到HTTPS的完整实践过程。文章背景很具体:因为HTTP访问在国内被运营商劫持注入了广告,同时考虑到HTTP在搜索引擎中的排名劣势,作者决定为网站免费启用HTTPS加密。 核心方案围绕开源的证书颁发机构Let’s Encrypt展开。作者通过其官方推荐的Certbot工具,在Nginx和Ubuntu系统上实现了证书的自动签发与安装。文章不仅给出了具体的命令行步骤,还分享了一个关键优化点:建议在Nginx配置中开启HTTP/2协议,以显著提升HTTPS下的传输性能。此外,针对Let’s Encrypt证书90天过期的特点,作者演示了如何用crontab设置定时任务来自动续期证书,确保服务不间断。 最后,文章也指出了启用HTTPS后的“收尾工作”:需要在WordPress等内容管理系统中,将所有的资源链接从http://强制修改为https://,并更新相关缓存插件设置,否则浏览器会因混合内容而阻断页面加载。整个过程从问题出发,到具体实施与优化,形成了一个清晰可复现的免费方案闭环。

IT 2017-12-24 19:51:34 / 累计浏览 2,943

使用 Ubuntu Cleaner 为 Ubuntu/LinuxMint 释放空间

这篇文章讲的是如何用 Ubuntu Cleaner 快速释放 Ubuntu 及其衍生发行版(如 LinuxMint)的磁盘空间。对于 Linux 用户来说,系统长期使用后容易堆积缓存、旧内核和残留包,而手动清理过程繁琐又容易出错。 作者推荐了 Ubuntu Cleaner 这个工具,它其实源自经典的 Ubuntu Tweak 中的 Janitor 模块,后来由开发者独立维护并重新发布,算是让许多用户怀念的功能得以延续。这款工具能一键清理浏览器缓存、缩略图、APT 缓存、过期内核和无用包等“垃圾”,覆盖了大部分常见的空间占用源。 安装过程很简单,通过官方 PPA 源就能轻松搞定。使用起来也很直观:启动后勾选需要清理的项目,点击清理按钮即可。整个操作避免了手动执行复杂命令的风险,把原本耗时费力的系统维护变成了一次点击就能完成的事。 对于那些苦于系统空间不足,又不想折腾命令行的用户来说,这篇教程提供了一个高效、安全的解决方案。它让清理系统垃圾这件麻烦事变得轻松许多,尤其适合想要快速恢复磁盘空间的日常使用场景。

IT 2017-10-15 10:03:55 / 累计浏览 2,654

如何快速实现一个基于 Nginx 网站的监控场景

这篇文章讲述了小明在一家电商创业公司,如何从零开始构建基于Nginx的服务监控体系,并最终转向一站式云产品的实践历程。 故事的起点是老板提出的明确需求:要能实时统计服务调用次数与返回码、实现阈值报警,并支持灵活的历史查询,同时要求系统具备良好的扩展性和成本控制。小明在对比了传统OLAP、搜索引擎和实时计算方案后,选择了自研实时计算架构,并详细设计了包含数据通道、计算引擎、存储和展示门户的完整链路。 然而,理想丰满,现实骨感。在长达两个月的开发过程中,小明遭遇了一系列典型痛点:多组件集成排查困难、Nginx日志清洗繁琐、为防数据重复计算而设计的存储幂等性问题、延迟数据如何合并、以及如何高效遍历所有服务进行报警检查等。这些挑战导致项目进度严重滞后。 转机来自一次与师兄的交流。小明了解到阿里云ARMS这款产品,它采用“实时计算+列式存储”架构,将日志采集、实时聚合、报警和可视化报表集成于一体。对于小明最核心的Nginx监控场景,ARMS提供了开箱即用的模板,只需在日志格式中加入如`$request_time`等字段即可快速接入。它不仅能直接提供监控大盘和报警功能,还开放了API,便于业务系统直接对接数据,从而将小明从繁琐的底层开发中解放出来。