服务器性能优化教程 从系统到数据库全方位提速指南

一、为什么要优化服务器

很多人买了服务器搭网站,发现打开很慢,第一反应是”配置不够”,然后疯狂加钱升级配置。其实大部分情况下,不是配置不够,而是没有优化。

一台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优化好了,整体速度提升非常明显。

— 本文由云荐博客整理,转载请注明出处 —

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容