1. 环境准备篇:服务器选型与操作系统初始化
做运维这些年,我见过太多项目栽在第一步。服务器还没上线,坑就埋下了。说白了,环境准备就像盖楼打地基——地基歪了,后面装修得再好也白搭。
这一章,咱们聊聊服务器选型和系统初始化。我会把踩过的坑、总结的经验,一股脑倒出来。
1.1 服务器选型:别光看配置单
选服务器,很多人只看 CPU 核数和内存大小。其实不然。我遇到过一家公司,买了高配服务器,结果业务跑起来卡得要命。查了半天,发现是磁盘 IO 成了瓶颈。
选型时,你得想清楚几个问题:
- 业务类型:是计算密集型,还是 IO 密集型?
- 存储需求:SSD 还是 HDD?RAID 级别怎么选?
- 网络带宽:内网还是公网?峰值流量多大?
- 扩展性:未来 3 年业务增长,服务器能扛住吗?
1.2 操作系统安装:最小化原则
系统安装,我坚持一个原则:最小化安装。不需要的包,一个都不装。为什么?
- 减少攻击面——少一个包,少一个漏洞
- 降低维护成本——升级、打补丁都省事
- 提升性能——系统越干净,跑得越稳
我个人习惯用 CentOS 或 Ubuntu LTS 版本。生产环境别追新,稳定第一。
1.3 内核参数调优:别让默认值坑了你
系统装完,第一件事就是调内核参数。默认参数是为通用场景设计的,生产环境根本不够用。
我整理了一份常用参数表,你直接拿去用:
| 参数 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
net.core.somaxconn |
128 | 65535 | TCP 连接队列长度,高并发场景必须调大 |
net.ipv4.tcp_tw_reuse |
0 | 1 | 允许复用 TIME_WAIT 状态的连接 |
vm.swappiness |
60 | 10 | 降低 swap 使用倾向,优先用内存 |
fs.file-max |
系统默认 | 1000000 | 最大文件句柄数,高 IO 场景必调 |
举个例子,net.core.somaxconn 这个参数。默认 128,意味着同一时间只能有 128 个连接在排队。如果业务量稍微大点,新连接就直接被丢了。我遇到过线上服务间歇性超时,查了半天,就是这玩意儿搞的鬼。
调优命令:
# 临时生效
sysctl -w net.core.somaxconn=65535
# 永久生效,写入 /etc/sysctl.conf
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
sysctl -p
1.4 文件系统配置:选对格式,少走弯路
文件系统这块,坑也不少。我见过有人用 ext2 跑数据库,结果断电后数据全丢了。嗯,这里要注意:
- ext4:稳定,适合普通业务
- xfs:大文件、高并发场景首选
- btrfs:功能多,但生产环境慎用
我个人习惯用 xfs。为什么?它支持在线扩容,而且对大文件处理效率高。数据库、日志存储这些场景,xfs 表现很好。
1.5 磁盘分区与挂载:规划要长远
分区这事儿,看似简单,但规划不好后面很麻烦。我见过有人把所有数据放一个分区,结果日志把磁盘写满,系统直接宕机。
我的分区方案:
/boot:512MB,放内核和引导文件/:50GB,系统根分区/var:100GB,日志和临时数据/data:剩余空间,业务数据
挂载时,记得加 noatime 参数。这个参数能减少磁盘写入,提升性能。
1.6 网络配置:别忽略 MTU 和 DNS
网络配置,很多人只配个 IP 就完事了。其实 MTU 和 DNS 也很关键。
- MTU:默认 1500,但内网环境可以调到 9000(巨帧)。能提升大文件传输效率。
- DNS:别用默认的。我建议用 114.114.114.114 或 8.8.8.8,解析速度快,稳定性好。
我曾经遇到过一个问题:内网传输大文件,速度死活上不去。查了半天,发现是 MTU 没调。改成 9000 后,速度直接翻倍。
知识体系总览
下面这张图,把环境准备的核心逻辑串起来了。你一看就明白:
你看,环境准备不是简单装个系统就完事。从选型到网络配置,每一步都得想清楚。跳过任何一步,后面都可能出大问题。
总结一下:
- 选型看业务,别只看配置
- 系统最小化安装,减少风险
- 内核参数必须调,默认值不够用
- 文件系统选 xfs 或 ext4,别追新
- 分区规划要长远,用 LVM 管理
- 网络配置别忽略 MTU 和 DNS
好了,环境准备篇就聊到这儿。记住一句话:前期多花一小时,后期少熬一个通宵。