服务器运维入门先搞懂这几件事:从选机器到线上排障的实操顺序
先想清楚机器给谁用,再谈配置
刚接手服务器的人最容易犯的错,是先去比参数,而不是先问这台机器要跑什么。同一台 E5-2683v4*2 配 64G 的机器,拿来跑一个日访问几千的站点是浪费,拿来跑高并发接口又可能不够。
我一般会先分三类场景。第一类是单站点或者小型应用,CPU 单核性能比核心数重要,硬盘 IO 比内存容量重要;第二类是要跑数据库或者缓存,内存和磁盘类型直接决定响应速度;第三类是做站群或者多 IP 业务,这时候 IP 段和带宽的分配方式比机器本身更关键。
场景定了,配置才有讨论的意义。反过来先买机器再想用途,返工的成本远高于多花的那点钱。
线路和带宽,是新手最容易混淆的地方
带宽和线路是两回事,这点必须分开看。带宽说的是每秒能过多少数据,线路说的是数据走哪条路、绕不绕。
一台标着 20M 带宽的香港机器,如果走的是直连线路,国内访问延迟通常在几十毫秒;同样 20M,如果绕经其他地区,延迟可能翻两三倍。带宽够不够决定高峰会不会卡,线路好不好决定每次请求要等多久。
- 面向国内用户的业务,优先看机房到大陆的回程线路,别只看带宽数字
- 纯海外用户访问,线路影响小,带宽和流量计费方式更值得算
我见过不少配置买高了、线路选错了的情况,钱花在核心数上,用户却在抱怨打开慢。
如果业务主要面向国内、又要独立机器,香港自营物理服务器这类 20M 直连的机型是常见选择,配置给到金牌 6138 二十核四十线程、32G 内存,月付一千三百多人民币,适合有一定并发量的站点。
系统上线后的头三天,决定后面半年顺不顺
机器拿到手,别急着装业务。前三天做的几件事,直接决定后面出问题时你排查得快不快。
第一件事是确认磁盘和文件系统。物理机通常是单盘或者做了阵列,先看 df -h 和 lsblk 的输出,搞清楚哪块盘挂在哪,别等写满日志才发现根分区只剩几百兆。
第二件事是把监控搭起来。CPU、内存、磁盘 IO、网络流量这四个指标,至少要能看到最近一天的趋势。没有趋势数据,出问题只能靠猜。
第三件事是留一条不依赖业务的登录通道。业务端口被占满、防火墙规则写错的时候,能通过带外管理或者备用端口进去,这一点救过很多次场。
这三件事花不了两个小时,但省下的是故障时的排查时间。换我我会把监控和日志轮转放在装业务之前做。
出故障时先看什么,顺序不能乱
线上报警响了,第一反应不该是重启。重启能解决一部分问题,但会把现场证据一起清掉。
我的顺序是先看负载和进程。top 或者 htop 能立刻看出是 CPU 打满还是 IO 等待高;如果是 IO 等待高,问题多半在磁盘,继续看 iostat;如果是内存被吃光,看是不是有进程在泄漏。
网络类的问题另说。丢包和延迟要用 mtr 看每一跳,别只 ping 一个地址就下结论。很多所谓的「服务器卡」,最后查出来是中间某一跳在抖。
还有一类问题不在机器上,在带宽。流量跑满的时候,SSH 都会卡,这时候先确认是不是被刷了或者被爬了,再看机器本身。
排查顺序乱了,容易在错误的方向上花掉一两个小时。按负载、磁盘、内存、网络的顺序走,多数问题十分钟内能定位到大致范围。
什么时候该换机器,什么时候该调配置
不是所有性能问题都要换机器。内存不够可以加,磁盘慢可以换 SSD 或者加缓存,这些在物理机上多数是能调的。
真正该换机器的情况通常有两种。一种是架构上就不匹配,比如单机跑不下、必须拆服务;另一种是机器本身的规格到顶了,比如内存槽插满、盘位用完。
预算有限的时候,我倾向于先租一台够用的机器跑一个月,看真实负载曲线,再决定要不要升级。按经验,先租后买比一次性买高配省得多,尤其是业务量还在爬坡的阶段。
面向海外用户的场景,德国裸机云这类 100M 带宽、月付九十多美元的机型,适合做对延迟不敏感的分发或者备份节点,性价比比堆高配更实在。
最后给个能直接执行的说法:单站点起步,选 8G 内存加 10M 以上直连线路的机型就够,月付大致在两百美元上下;并发上来之后再按监控数据加内存或者换带宽;如果是多 IP 站群业务,一开始就要按 IP 段和线路选,别等业务跑起来再迁移,迁移的代价比多花的月费高得多。