一、为什么要优化服务器
很多人买了服务器搭网站,发现打开很慢,第一反应是”配置不够”,然后疯狂加钱升级配置。其实大部分情况下,不是配置不够,而是没有优化。
一台1核1G的服务器优化好了,跑WordPress博客完全够用,日IP几千都没问题。不优化的话,8核16G也可能卡。
这篇文章从系统、Web、PHP、数据库、缓存五个维度,教你全方位优化服务器性能。
二、系统层面优化
1. 更换系统源
默认的官方源在国内访问慢,换成国内镜像源,安装软件速度快很多。
CentOS换阿里云源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all && yum makecache
Ubuntu换阿里云源:
sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list apt update
2. 关闭不必要的服务
系统默认开启了很多用不到的服务,占用内存和CPU:
# 查看运行中的服务 systemctl list-units --type=service --state=running # 关闭不需要的服务(根据实际情况) systemctl stop postfix systemctl disable postfix
3. 添加Swap虚拟内存
小内存服务器(1G/2G)建议加Swap,防止内存不足OOM:
# 创建2G Swap dd if=/dev/zero of=/swapfile bs=1M count=2048 chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
4. 调整系统参数
编辑 /etc/sysctl.conf,添加以下内容:
# 优化网络 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_reuse = 1 # 优化文件描述符 fs.file-max = 65535 # 优化内存使用 vm.swappiness = 10 vm.overcommit_memory = 1
执行 sysctl -p 生效。
三、Nginx优化
1. worker进程数
worker_processes 设置为CPU核心数:
worker_processes auto; worker_cpu_affinity auto;
2. 开启gzip压缩
gzip on; gzip_min_length 1k; gzip_comp_level 6; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/json; gzip_vary on;
3. 静态资源缓存
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
4. 开启HTTP/2
HTTPS站点开启HTTP/2,多路复用提升加载速度:
listen 443 ssl http2;
四、PHP优化
1. 开启OPcache
OPcache把PHP编译后的字节码缓存起来,避免每次请求都重新编译,性能提升2-3倍。
宝塔面板:软件商店 → PHP设置 → 安装扩展 → 找到opcache安装。
配置参数:
opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60 opcache.validate_timestamps=1
2. 调整PHP进程管理
编辑php-fpm.conf或www.conf:
pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 pm.max_requests = 500
小内存服务器把max_children调小,避免内存溢出。
3. 禁用不必要的函数
php.ini里禁用危险函数,提高安全性:
disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru
五、MySQL优化
1. 调整缓冲池大小
innodb_buffer_pool_size 是MySQL最重要的参数,建议设置为物理内存的50%-70%。
2G内存服务器:
innodb_buffer_pool_size = 1G
4G内存服务器:
innodb_buffer_pool_size = 2G
2. 其他重要参数
innodb_log_file_size = 256M innodb_log_buffer_size = 64M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT max_connections = 200 table_open_cache = 1024 query_cache_type = 0 query_cache_size = 0
注意:MySQL 8.0已经移除了query cache,不用设置。
3. 定期优化数据库
宝塔面板 → 数据库 → 选中数据库 → 优化表,定期执行可以清理碎片、提升性能。
六、缓存优化
1. 安装Redis
Redis是内存数据库,用来缓存热点数据,减少数据库查询。
宝塔面板:软件商店 → 搜索Redis → 安装。
WordPress配合Redis Object Cache插件,数据库查询能减少80%以上。
2. 页面缓存
安装WP Rocket或WP Super Cache插件,把动态页面生成静态HTML缓存,用户访问直接返回静态文件,速度提升10倍以上。
注意:登录用户和评论用户不缓存,避免看到别人的缓存页面。
3. 浏览器缓存
Nginx配置里设置静态资源的Expires和Cache-Control,让用户浏览器缓存静态资源,二次访问直接从本地加载。
七、图片优化
图片是网站加载慢的主要原因,一张几MB的图片能拖慢整个页面。
- 上传前压缩:用TinyPNG在线压缩,画质几乎不变,体积减少50%-80%
- 自动压缩:安装Smush插件,上传时自动压缩
- 使用WebP格式:同画质下体积比JPG小30%
- 懒加载:图片滚动到可视区域才加载,减少首屏加载时间
- CDN加速:图片走CDN节点,加载更快
八、优化效果对比
| 优化项 | 优化前 | 优化后 | 提升幅度 |
|---|---|---|---|
| 首页加载时间 | 5-8秒 | 1-2秒 | 70% |
| TTFB首字节 | 1-2秒 | 200-500ms | 75% |
| 并发能力 | 10-20人 | 100-200人 | 10倍 |
| 内存占用 | 80%-90% | 40%-60% | 降低30% |
九、常见误区
误区1:配置越高越快
错。没优化的8核16G,可能比优化好的2核4G还慢。先优化,不够再升级配置。
误区2:缓存开得越多越好
错。缓存太多会导致内容更新不及时,用户看到旧内容。合理设置缓存时间,动态内容不缓存。
误区3:香港服务器一定慢
错。优化好的香港CN2服务器,配合CDN,国内访问速度可以和国内服务器差不多。
误区4:数据库优化没用
错。数据库是动态网站的瓶颈,MySQL优化好了,整体速度提升非常明显。
— 本文由云荐博客整理,转载请注明出处 —





暂无评论内容