swap 是 Linux 系统的虚拟内存,客户访问网站实际是通过内存执行,云服务器内存有限,大流量访问会导致内存不足。为解决该问题,当物理内存不足时,系统就会自动调用硬盘来充当内存,以弥补内存的紧缺,这就是虚拟内存的作用。现在的云服务器大多都是 kvm 虚拟架构的,开启虚拟内存就更有必要( OVZ虚拟架构机器不可用此功能 )。当然如果内存32G以上就不用考虑开启 swap 了。
开启方法:【 软件商店 】安装Linux 工具箱,然后在 Linux 工具箱窗口点击左侧的【 Swap/虚拟内存 】,填写 Swap 虚拟内存 大小,然后点击【确定】。宝塔官方建议 swap 容量在真实内存容量的1.5倍左右,若您的服务器内存大于4GB,可设 1-2GB 的固定值。(1GB=1024MB)
Swap推荐值:
Linux工具箱 不能使用的解决方案
输入一下命令:
dd if=/dev/zero of=/mnt/swapfile bs=1MB count=1024
全选代码
复制
把刚才创建的文件做成 swap 文件
mkswap /mnt/swapfile
全选代码
复制
开启 swap
swapon /mnt/swapfile
全选代码
复制
查看状态
swapon -s
全选代码
复制
查看内存状态
free -m
全选代码
复制
=========以下操作能确保 swap 更安全,且重启后有效===========
查看 vim /etc/rc.local 如果有 swapoff -a 修改为 swapon -a,我这里是没有这个的。
vim /etc/rc.local
全选代码
复制
设置自动挂载
vim /etc/fstab
全选代码
复制
把下面命令添加到最下面的空行
/mnt/swapfile swap swap defaults 0 0
全选代码
复制
权限设置
chown root:root /mnt/swapfile
chmod 0600 /mnt/swapfile
全选代码
复制
查看 swappiness 值。
cat /proc/sys/vm/swappiness
全选代码
复制
如果为 0 ,则将其改为 10
·sysctl vm.swappiness=10
全选代码
复制
永久设置 swappiness,如果该文件里没有,则追加
vm.swappiness = 10
全选代码
复制
vim /etc/sysctl.conf
全选代码
复制
重启,那些永久设置项就生效了。
PS:swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap 空间,swappiness=100 的时候表示积极的使用 swap 分区,并且把内存上的数据及时的搬运到 swap 空间里面。
在Linux系统中增加Swap交换空间、交换内存
验证配置
最后,我们可以通过以下命令来验证Swap空间是否已正确配置和启用:
swapon --show或者free -h
这些命令将显示系统上当前启用的Swap空间的信息,包括大小和使用情况。
出现下面类似的代码 说明设置成功
sudo chown root:root /www/swap/swapfile
sudo chmod 600 /www/swap/swapfile
二、添加计划任务释放内存
释放内存就是将驻留在内存中的数据从内存中释放出来,提高内存资源的利用率,提升云服务器性能。宝塔面板已经考虑到了内存释放的问题,可以添加内存释放计划任务,让服务器每天或每周释放一次,释放PHP、MYSQL、PURE-FTPD、APACHE、NGINX的内存占用,建议在每天半夜执行,间隔时间根据自己网站的用户量及内存占用百分比来定。
释放方法:
宝塔面板点击左侧导航的【 计划任务 】选择任务类型为释放内存,根据自己需要设置执行周期和执行时间,点击确定即可。
使用PHP 缓存扩展
脚本缓存:xcache、opcache内容缓存任选一项安装,2-5.4建议使用xcache,PHP5.5以上建议使用opcache
内容缓存:若程序支持,建议优先顺序如下: redis > apc > memcached > memcache
注意:内容缓存和脚本缓存,都各只安装一个,不要安装多个,否则可能导致您的站点程序异常。
但是Memcached和redis两个内容缓存可同时安装。缓存扩展并不是越多越好,反而拖慢php执行效率
若程序支持,尽量使用imagemagick代替PHP自带GD,以提升性能
若程序支持,尽量安装fileinfo、exif扩展,以提升站点性能和安全性
若确定您的程序不需要,尽量不要安装ZendGuardLoader,ioncube解密扩展
若您的程序不需要PATH_INFO,请把它关闭
安装方法:
登录宝塔面板,进入已安装PHP版本的管理界面,在管理界面左侧的【 安装扩展 】,选择您需要的缓存插件进行安装。
- php 配置优化和性能调整(并发)
PHP并发调整建议:
CPU/内存 单站点 多站点
2H/2G 50-80 30-50
2H/4G 60-100 30-50
4H/4G 100-150 30-80
4H/8G 100-200 30-80
6H/6G 100-200 30-80
8H/8G 100-300 50-100
8H/16G 100-300 100-150
16H/16G 100-300 100-150
注1:容易受到CC攻击的站点使用的PHP版本,尽量不要设置过高的并发,以免服务器被打死
注2:不建议设置超过300并发上限,哪怕服务器性能足够好;若发现并发不够用,请尝试优化站点数据库缓存可能更有效
1、memory_limit 用来设置脚本内存的临界点,也不是说设置的越大越好,原则上脚本内存的设置不要超过云服务器的物理内存, 否则可能会导致启用磁盘swap,服务器资源耗尽,最后死机。
配置修改:登录宝塔面板,进入已安装PHP版本的管理界面,在管理界面左侧的【 配置修改 】里,把 memory_limit 脚本内存限制修改成 256M(默认是128M),然后保存即可。
2、并发量和日访问量是两个概念,所谓并发可以简单理解为同一秒访问网站的客户数量,假设并发设置为50(即每秒同时访问50次),那么 1 分钟就可以有 3000 的访问量。但也不是说并发设置的越大就越好,如果并发数设置过大,被 CC 攻击时服务器宕机挂掉的可能性也十分的高,建议并发数设置不要超过 300
性能调整:php的并发调整是优化中至关重要的环节,宝塔面板里面自带了几个并发优化方案,一般 4 核 8G 内存的云服务器,设置 30 并发或 50 并发就可以。
- MySQL数据库版本建议:
CPU/内存 数据库
1H/512M MySQL5.1
1H/1G MySQL5.1/5.5
2H/2G MySQL5.1/5.5
2H/4G MySQL5.5/5.6
4H/4G+ MySQL5.5/5.6/5.7
MySQL 进行性能优化:宝塔面板非常人性化,内置了数据库性能优化方案,我们只需要鼠标轻点即可完成。进行性能一键优化后,保存并重启数据库,然后在当前状态进行观察,根据建议做适当的调整。
设置方法:登录宝塔面板,进入已安装MySQL版本的管理界面,左侧的 【 性能调整 】,根据您的服务器配置选择优化方案,然后先保存再重启数据库即可。
七、Session 存储设置
Session 称为会话信息,位于web服务器上,主要负责访问者与网站之间的交互,当访问浏览器请求 http 地址时,将传递到web服务器上并与访问信息进行匹配,宝塔默认 Session 保存在指定的文件夹中,当用户访问时要从文件中检索 Session ID ,效率不高,宝塔面板可以把 Session 存储位置修改到 redis ,提高会话信息检索效率,减少响应时间。
设置方法:1、软件商店里安装Redis;2、PHP扩展安装redis插件;
3、打开 redis 设置窗口,再点击 redis 窗口的左侧【性能调整】,在 requirepass 一栏输入密码,这个密码自己设置,越复杂越好,设置完成后复制你设置的密码,然后点击【保存】;
- 打开 php 管理窗口,再点击 php 管理窗口左侧的 【 Session设置 】,存储模式切换成redis,然后在密码位置粘贴上一步复制的密码,然后点击保存。
八、站点修改 流量限制
在站点设置中的“流量限制”,启用后方案根据个人情况自选,一般选择博客就行,这样对网站有一个基础的防护作用,将来哪天网站被 DDOS 或者 CC 攻击,这里会有一定的作用。
并发限制:同时有 300 人访问你服务器,一般的小博客不会有这么大的并发。
单 IP 限制:一定时间内同一个 IP 访问网站的次数限制。这个根据你网站流量来设置,一般 10 个左右不少了。
流量限制:用来限制单 IP 每个请求的流量大小。
以上三个设置可以按照宝塔面板给你弄好的默认数值,如果你不确认很明白选项的意思,不要私自更改,很可能会影响到服务器性能。