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

系统运维

共 606 篇文章

IT 2016-01-27 22:32:32 / 累计浏览 1,950

非侵入式监控PHP应用性能监控分析

这篇讲的是如何在不触碰业务代码的前提下,对PHP应用进行性能监控。作者从“非侵入”这个实际需求出发,给出了从易到难的两种可行路径。 对于基础的请求耗时监控,最简单的方式是分析Nginx日志。文章清晰解读了日志中两个关键字段的区别:`$request_time`是端到端的总耗时,而`$upstream_response_time`则精准反映后端PHP处理的耗时。只需关注后者,就能快速定位PHP服务本身的性能瓶颈。 如果要深入分析单个请求内部的性能热点,文章详细介绍了使用xhprof扩展的完整方案。它不仅提供了xhprof的安装与配置步骤,其亮点在于展示了一套“无侵入”的部署技巧:通过Nginx的`auto_prepend_file`或php.ini配置,让监控脚本自动加载,实现了对业务代码的零修改。同时,方案还内置了按URL和超时时间智能采样的逻辑,避免了全量监控带来的性能开销。 整篇文章从日志层面的快速概览,到代码执行层面的精准剖析,形成了一套层次分明的监控方法论,为PHP开发者提供了实用的性能分析工具箱。

IT 2016-01-26 23:42:03 / 累计浏览 1,531

资源包的设计

这篇讲的是游戏资源包设计中的工程实践与权衡。作者从“如何把资源打包并高效更新”这一核心问题出发,指出了当前直接使用通用压缩格式(如zip)的普遍做法,以及为应对资源引用关系、大量文件检索等需求而采用自定义格式(如MPQ、AssetBundle)的趋势,其中对文件名进行hash索引是关键一步。 然而,文章敏锐地指出,hash冲突是这类设计中不容回避的问题,并以Unity的AssetBundle在冲突时直接放弃打包为例,说明了现有方案的缺陷。作者随后提出了一种简单有效的“加盐二次hash”方案:在打包时若发现hash冲突,便引入一个可确定的salt值重新计算,从而在运行时能唯一区分原文件,且强调了正确加盐(如将salt作为hash seed或循环XOR)的重要性,避免了简单拼接导致的二次冲突。 此外,文章还涵盖了资源包间的引用需依赖间接索引而非单纯hash值,以及patch更新可设计为保留完整索引的增量包、并定期生成基准全量包的策略。最后,作者将打包工具类比为git,需要实现初始化、文件追踪、版本打包与diff生成等版本管理功能。整体方案兼顾了理论基础与工程落地,对处理游戏资源管理的复杂性提供了清晰的思路。

IT 2015-11-08 22:56:40 / 累计浏览 1,856

[坑]打rpm包时,注意%post和%postun的执行顺序

这篇讲的是RPM打包中一个容易被忽略的坑:升级软件包时,错误的脚本执行顺序会导致配置被意外修改。作者在打包PHP扩展时发现,每次执行`yum update`升级成功后,新扩展在php.ini中的配置项就会被自动注释掉。 问题出在spec文件的`%postun`段。升级时,系统会先执行新包的`%post`段(安装后),再执行旧包的`%postun`段(卸载后)。作者旧包的`%postun`脚本原本是为卸载准备的,会用sed注释掉扩展配置,这就在升级过程中被误触发了。 根本原因在于`%postun`段接收的参数:参数0代表卸载,1代表升级。解决方案很直接——在`%postun`脚本中增加判断,只有当参数为0时才执行注释操作。这样升级时配置就能完好保留。文章还清晰梳理了`%pre`、`%post`、`%preun`、`%postun`在不同场景(安装、升级、卸载)下接收的参数含义,对编写可靠的spec文件很有参考价值。

IT 2015-11-08 22:09:55 / 累计浏览 1,809

ubuntu设置开机后台自动运行

这篇讲的是在Ubuntu系统中设置脚本开机自动后台运行时遇到的典型路径问题。作者从创建一个简单的Shell脚本开始,通过编辑`/etc/rc.local`文件实现开机自启,但重启后却发现日志提示“sslocal:command not found”。 问题根源在于,虽然`sslocal`命令实际存在于`/usr/local/bin/`下,但`rc.local`执行环境的PATH变量并未包含该目录,导致系统无法定位到命令。作者的解决思路很直接:将需要调用的命令文件从`/usr/local/bin/`直接移动到系统标准路径`/bin`下,从而让任何执行环境都能找到它。 这个案例清晰展示了Linux后台任务管理中容易忽略的环境差异问题。对于需要自动化运行的脚本,确保依赖的命令位于系统标准路径,或在脚本中明确指定其绝对路径,是避免此类“命令未找到”错误的关键。

IT 2015-11-02 23:30:27 / 累计浏览 1,972

使用Smem精确显示Linux下内存使用情况

Linux系统管理员常被“内存到底被谁吃了”这个问题困扰,尤其是当应用内存占用高但系统监控工具显示不清晰时。这篇文章介绍了一个利器——Smem。 Smem能提供比传统工具更精确的内存视图,它直接读取内核的内存映射,输出包括USS(进程独占内存)、PSS(按比例分摊的内存)和RSS等关键指标,让你一眼看清每个进程的真实“食量”。文中通过实际命令演示了它的多种用法:默认列出所有进程、用`-w`查看整体内存分布、或用`-up`按用户汇总内存占比。 文章还贴心地用图表和文字解释了VSS、RSS、PSS、USS的区别,点明了数值一般满足 VSS ≥ RSS ≥ PSS ≥ USS 的规律,帮你理解这些指标的实际意义。无论你是想排查内存泄漏,还是做容量规划,Smem都能提供更可靠的数据支撑。

IT 2015-10-26 22:17:50 / 累计浏览 2,631

linux 之 mv

这篇文章从一个真实场景切入:同事在使用 `mv` 命令将一个充满小文件的目录移动到另一个磁盘时,发现目标空间在增长,但源空间却迟迟没有释放。作者通过 `lsof` 发现,这是因为文件在移动过程中并未被立即删除,而是全部移完才清理。 那么,关键问题来了:如果移动如此大量的文件过程中发生了中断,已移走的文件会被删除吗?作者猜测可能是“删已移的,留未移的”,但这仅仅是猜测。 真正的答案藏在 `mv` 命令的源码里。作者查看了其核心实现,发现逻辑异常简洁:它只是简单地逐个复制文件,待全部成功后才执行删除操作。源码中并未对“中断”这种意外情况做任何特殊处理。这意味着,一旦中途出错或中断,结果将是:**复制完成了多少就算多少,但不会删除源目录中的任何文件**。 这个结论揭示了 `mv` 在处理大规模文件迁移时的一个重要风险点——它并非原子操作,且中断后状态不确定。对于需要进行此类操作的管理员来说,理解这一底层行为至关重要,它提醒我们务必使用更可靠的工具或脚本(如结合 `rsync` 与检查点)来处理关键数据迁移。

IT 2015-09-04 21:33:36 / 累计浏览 3,114

我的npm笔记

这篇文章整理得很实在,作者从日常使用Node.js的经验出发,把npm这个包管理工具的核心用法做了一次清爽的备忘。文章开篇点明了npm作为包管理器的核心功能,随即直面一个国内开发者常遇到的痛点:官方源访问缓慢或不稳定。 针对这个问题,作者给出了多种解决方案,包括临时指定淘宝镜像安装、全局配置国内镜像源、设置Linux别名,以及直接安装cnpm客户端。每种方法都附上了可直接复制的命令,非常实用。 文章的重点是“常用命令”部分,系统性地罗列了从安装、卸载、搜索到发布、配置管理等一系列高频操作命令。这些命令并非枯燥罗列,而是结合了版本指定、全局安装等实际场景,相当于一份简洁的npm速查手册。对于需要在日常开发中快速回顾或查找特定命令的开发者来说,这比冗长的官方文档要友好得多。整篇文章篇幅不长,但覆盖了从环境配置到日常操作的关键环节,读完就能上手。

IT 2015-09-04 21:25:14 / 累计浏览 1,751

记一次因错误的500页面引发的血案

这篇文章记录了一次线上故障的完整排查过程。某业务活动页的一个固定链接,会导致部分用户被强制跳转至首页,且一旦跳转就“卡”在首页,无法再访问原链接。 排查过程颇具戏剧性:开发者通过抓包发现,浏览器根本没请求那个出问题的链接,而是直接请求了首页。查看缓存,其内容竟是一句 `meta http-equiv="refresh"` 跳转代码。这个行为在开发环境无法复现,最终矛头指向了生产环境的 Nginx 配置。 根因在于生产环境配置了 `error_page 500 = /50x.html;`,而这个自定义的 50x.html 页面内容恰好就是跳转到首页的 meta 标签。在系统上线替换文件期间,可能因文件不完整触发了 500 错误,导致浏览器缓存了这个跳转页面,从而陷入无限循环。 文章给出的解决方案很明确:一是为这个错误页面添加禁止缓存的 HTTP 头,从根源上阻止缓存;二是提供一个真正友好的 500 错误提示页,而非简单粗暴地跳转。这个案例生动地说明了,一个看似不起眼的、设计不佳的错误处理页面,在特定条件下可能演变成影响用户体验的持续性故障。

IT 2015-07-23 14:03:51 / 累计浏览 4,449

“集群和负载均衡”的通俗版解释

这篇讲的是“集群”和“负载均衡”这两个常被提及却未必真懂的计算机技术概念。作者没有堆砌术语,而是从实际困惑出发,力求用最通俗的语言帮大家理清它们。 文章核心是通过生活化的比喻来拆解技术。比如,用“超市收银员高峰期增开出口”来解释负载均衡的核心——“分摊压力”;用“兄弟开裁缝铺接单、做手工家具”的故事,生动区分了负载均衡集群、高可用集群与高性能计算集群的不同目标和工作方式。这种写法让抽象概念立刻变得可感可知。 作者不仅解释了基本概念,还对比了三种主要集群类型在解决“分摊任务”、“保障持续服务”、“并行复杂运算”等不同场景问题时的侧重点。文章最后也点明了这类知识的实践门槛,强调了从架构、运维到开发视角的差异。 它像一份清晰的技术概念地图,帮助读者快速建立直观理解。对于那些常听到这些词但一直没机会系统梳理的开发者和技术爱好者,这种深入浅出的解读正是所需的入门钥匙。

IT 2015-07-23 14:03:12 / 累计浏览 1,754

fabric执行在后台运行的命令

这篇讲的是在使用Fabric执行远程命令时,后台进程可能无法正常运行的坑点及解决方案。作者在用Fabric的run()执行nohup命令启动压力测试时,发现命令并未在后台成功运行。文章分析了这背后涉及Fabric对shell交互模式的处理机制,并指出直接使用“&”符并非可靠做法。 为解决此问题,文章推荐了三种更鲁棒的替代方案:优先使用systemd等系统守护进程管理工具,或借助screen/tmux实现进程detach,最后才是尝试nohup(但成功率不稳定)。作者特别指出使用screen时需设置pty=False以避免问题。 文中还附上了一个管理JMeter压力测试的fabfile完整示例,展示了如何实际应用screen命令来部署和启动测试。对于常与自动化部署工具打交道的读者来说,这篇结合踩坑经验与具体代码演示的分享,能提供切实的参考。

IT 2015-07-23 13:57:34 / 累计浏览 4,188

“集群和负载均衡”在实战当中的运用技巧

这篇文章通过生动的比喻和生活中的实例,系统讲解了集群与负载均衡这些听起来高深、实则贴近实际的核心技术概念。 作者从最常见的误解切入,解释了集群的本质是多台计算机“联合工作”,而负载均衡的核心则是“分摊压力”。最巧妙的部分在于用“兄弟开店”的比喻清晰区分了三种集群类型:负载均衡集群如同“老大接单,兄弟们分工干活”;高可用集群则通过“兄弟互相备份”来保障服务不中断,并详细解释了双机热备、双工、互备等模式;高性能计算集群则好比“父子齐上阵,合力赶制复杂家具”。这些比喻让抽象的架构概念变得异常直观。 文章并非泛泛而谈概念,而是明确了它们各自的典型应用场景,比如超市收银对应负载均衡,早餐铺高峰时段对应高可用保障。同时也指出了掌握这些技术的门槛,强调其需要运维、架构、开发等多方面的实践知识积累,而不仅仅是理论理解。

IT 2015-07-21 23:39:31 / 累计浏览 1,912

一些LVS实验配置、工具和方案

这篇讲的是作者在LVS环境下验证的一种不中断业务的RealServer升级方案。核心目标是在不中断前端服务的情况下,对后端真实服务器进行维护或重启。 作者选用了LVS的DR(直接路由)模式进行实验。文章详细列出了网络规划,包括两台RealServer和一台Director Server的IP分配。关键在于具体的配置实践:在Director上,通过ipvsadm工具设置VIP和采用加权轮询调度算法;在RealServer上,则通过脚本在本地绑定VIP并设置ARP抑制,这是DR模式正常工作的基础。 作者验证的流程是:通过脚本控制,让需要升级的RealServer自动从LVS集群中移除,待维护完成并检查健康后,再自动重新加入集群。整个过程对客户端保持透明,实现了业务不中断。文章提供了可用的脚本片段,将配置步骤代码化,方便读者参考和复现。对于需要在生产环境中安全维护LVS节点的运维人员来说,这个实验记录提供了一套切实可行的操作思路和工具参考。

IT 2015-07-16 23:28:12 / 累计浏览 2,317

浅谈运维工具体系

运维体系庞大且复杂,这篇梳理的是支撑高效运维背后的工具全景图。作者从运维的三大核心场景——流程管理、发布变更与监控告警——出发,系统性地拆解了每个环节所需的工具类别与作用。 文章指出,运维工具并非铁板一块。在流程层面,工具负责衔接与审批,确保变更闭环与故障可追溯;在发布变更层面,从版本管理、配置下发到资源隔离,形成了一套从代码到线上状态的完整管控链路,尤其强调了以版本管理为起点、杜绝直接拷贝的规范做法。而在监控告警层面,则构建了从数据采集、异常检测到自动修复、通知的完整流水线,提到了 Logstash、StatsD 等具体技术选型,并区分了本地与远程拨测的不同价值。 整体来看,文章并未空谈理论,而是将各类工具按功能归类,并点明其解决的具体问题,比如配置漂移、故障定位、资源利用率等。它为读者勾勒出一个从操作界面到底层资源、从流程规范到技术实现的立体工具体系,适合正在搭建或优化自身运维体系的团队参考。

IT 2015-06-02 13:35:22 / 累计浏览 2,497

搭建自己的CA服务 – OpenSSL CA 实战

这篇讲的是如何用OpenSSL从零搭建一个私有CA服务,特别适合那些内部节点间需要SSL加密通信,又不想向公共CA支付证书费用的场景。 作者从“内部通信也需要安全认证但成本高昂”这一现实问题出发,提供了一份完整的OpenSSL自建CA实战指南。文章的核心是手把手的操作流程:从准备关键的openssl.conf配置文件开始,一步步创建CA自己的私钥、自签根证书,再到用这个CA为其他服务器颁发和签署证书。每一步都配有可直接运行的详细命令行示例,比如生成4096位RSA密钥、设置证书主体信息等,可操作性很强。 通过搭建自己的CA,你可以完全掌控内部系统的证书颁发与管理,既确保了节点间通信的安全性,又省去了向第三方CA申请证书的开销。对于需要快速为内部服务批量建立信任关系的运维和开发人员来说,这套自给自足的方案相当实用。

IT 2015-06-02 13:29:13 / 累计浏览 4,295

一个开发眼中的运维

这篇讲的是前新浪SAE运维主管郑志勇如何用开发思维重塑运维认知。作者从开发转型运维的亲身经历出发,提出了一个关键视角:运维与开发本质相通,核心都是管理资源。 文章首先厘清了运维的定位——不是打杂或服务开发,而是对业务稳定负责,保障系统架构合理。作者将程序设计的抽象、分层思想引入运维,提出“一切运维对象都抽象为资源”,这样就能用统一的方法进行配置和监控。他详细拆解了运维的资源观:不仅是硬件,还包括文件描述符、端口、数据库连接等一切可管理对象。 文章最实用的部分在于总结的运维原则。比如线上变更必须通过配置管理,任何手工操作都是对团队改进机会的浪费;系统上线前必须回答如何保障HA、扩展和监控。作者还强调配置管理的三大核心要素——包、文件和进程,认为只要控制这三者就能掌控整个系统。最后提出的“不犯第三次错误”和“运维越清闲,系统越稳定”等观点,直指运维工作的长期主义思维。 这些从实战中提炼的抽象方法论,尤其适合正在寻求体系化提升的运维人员,或希望与运维更好协作的开发者。

IT 2015-06-01 10:05:21 / 累计浏览 4,220

云计算时代:运维人员会踩到哪些坑?

这篇整理自ChinaUnix论坛热议的文章,汇集了多位一线运维人员的实战经验,直面云计算时代运维岗位的核心挑战。讨论焦点并非空谈理论,而是紧扣具体痛点:当服务器从百台暴增至万级,自动化运维如何落地?虚拟化资源池化后,故障定位为何反而更难?文中网友分享了Zabbix、Nagios、Cacti等开源监控工具的部署心得,也直言云磁盘I/O变慢往往是资源争抢或自身程序问题所致,解决方法需“对症下药”。 更关键的是职业转型的讨论。有网友犀利指出,跟不上自动化运维趋势的“手工作坊式”运维将面临淘汰;也有人强调,云平台运维本身创造了更高价值的新岗位,技能要求水涨船高。关于混合云服务商的选择,讨论也具体到阿里云、腾讯云乃至自建平台的性价比权衡。整场对话没有简单结论,而是呈现了云时代运维复杂性的真实切面——技术工具更迭、故障排查逻辑变化与个人技能升级,这三者构成了运维人员必须同时应对的挑战。

IT 2015-05-29 22:00:02 / 累计浏览 5,253

SNMP概述–运维必知的协议基础

这篇讲的是运维人员必须掌握的基础协议——SNMP。文章从“为什么需要远程网络管理”这个现实痛点出发,解释了SNMP如何让一个工作站就能监控成千上万设备。它详细拆解了SNMP的核心架构,包括被管设备、Agent代理和管理站这三个组件是如何通过UDP通信的,并梳理了GET、SET、TRAP等基本操作。 作者重点对比了SNMP的三个版本,指出早期版本因安全性薄弱已逐渐被弃用,而SNMPv3通过引入USM安全模式、身份验证(如MD5/SHA)和加密(如AES)等机制,实现了对消息篡改、伪装和窃听的防护,是当前的主流选择。文章最后还提供了在Linux系统上安装、配置并使用net-snmp服务的具体步骤,让理论落地。 总的来说,这是一篇从概念、原理到实战操作的完整入门指南,帮助运维人员快速建立对这个“简单”却无处不在的协议的系统认识。

IT 2015-05-29 20:12:59 / 累计浏览 7,796

Mac下使用SecureCRT的一些记录

这篇记录讲的是作者在Mac上使用SecureCRT终端连接软件时,亲身经历并解决的两个典型“坑”,以及积累的快捷键心得。 核心问题之一在于“密码总是存不住”。作者发现,这是SecureCRT在Mac上默认启用了系统“钥匙串访问”来管理密码所导致的。解决方法很具体:进入软件全局选项的Advanced设置页,取消勾选Use Keychain,即可让SecureCRT使用自带的密码保存功能。 另一个更隐蔽的问题是“CTRL+C发不出中断指令”。作者排除了键盘故障,尝试了各种设置均无效,最终意外发现根源在于输入法:必须将输入法切换至系统自带的“美式英文”,才能正常发送中断信号,即使切换至第三方输入法的英文模式也不行。 此外,文章还整理了一份Mac版SecureCRT与Windows版在快捷键上的差异列表,比如使用Command+L快速新开标签页连接,Command+K新建会话等。这些基于实践的小结,对于经常在Mac上进行远程连接的开发者来说,或许能省去不少摸索的时间。

IT 2015-05-29 20:05:15 / 累计浏览 2,867

ssh 免密码登录

这篇讲的是如何通过三个关键命令快速配置SSH免密码登录,免去每次连接都输密码的麻烦。作者从实际操作出发,清晰拆解了`ssh-keygen`生成密钥对、`ssh-add`管理密钥、`ssh-copy-id`分发公钥这三个核心步骤。 文章特别指出了一个容易踩坑的细节:`ssh-copy-id`这个方便的工具其实属于`openssh-clients`包,而不是`openssh`包本身。作者通过直接列出两个软件包的文件清单,让读者一眼就能看清这个差异。 掌握这套方法后,无论是日常运维还是脚本自动化,都能更顺畅地连接远程服务器。理解包之间的区别,则有助于在不同Linux发行版上准确找到和安装所需工具。

IT 2015-05-29 19:56:20 / 累计浏览 1,710

Nagios+OMSA监控dell设备硬件

这篇讲的是,如何用 Nagios 和 Dell OMSA (OpenManage Server Administrator) 配合,实现对 Dell 服务器硬件状态的实时监控。 文章的出发点很明确:虽然 Nagios 等监控工具很流行,但它们默认更侧重于服务与应用层的监测。对于服务器本身的硬件健康状况,比如 CPU 温度、风扇转速、存储阵列状态、机箱入侵检测等,则需要额外的解决方案。作者详细演示了整套部署流程。 核心方案分为两部分。在 Nagios 服务端,关键是下载并配置 `check_openmanage` 插件。文章提供了具体的命令定义示例,比如如何检测 CPU、存储、温度等,并且解释了插件的各类 `--only` 参数,让读者可以根据需要定制监控项。 在被监控的 Dell 物理服务器上,则需要安装 Dell 的 OMSA 管理套件。文章给出了在 CentOS 系统上配置 yum 源并安装 `srvadmin-all` 的完整命令。安装成功后,不仅 Nagios 可以通过插件获取硬件数据,管理员还可以通过浏览器访问服务器的 1311 端口,直接查看 OMSA 的 Web 管理界面。 整篇文章是一份非常具体的实操指南,从环境准备到每一步的配置修改都写得很清楚。对于需要管理 Dell 物理服务器运维的工程师来说,它直接给出了一个可用的监控方案。