PHP网站部署

知乎看到   有时间验证一下,觉厉
 
做者:eechen
连接:https://www.zhihu.com/question/60609134/answer/178175522
来源:知乎
著做权归做者全部,转载请联系做者得到受权。

1.若是能够,系统迁移到Linux,PHP升级到PHP7(稳妥起见,建议使用7.0而非最新的7.1).数据库

2.PHP开启OPcache缓存,把PHP脚本解析后生成的OPcode缓存在共享内存中,避免每次请求重复解析.缓存

3.Linux开启HugePages,OPcache开启huge_code_pages.服务器

4.能够考虑关闭OPcache对PHP文件的时间戳验证和开启opcache.file_cache来提高性能.运维

5.PHP-FPM默认进程池的进程数设置为固定(static)的1到1.5倍CPU核心数,减小系统上下文切换带来的开销.性能

6.对于存在明显I/O阻塞的脚本,能够配置Nginx转发到一个动态(dynamic/ondemand)的PHP-FPM进程池中处理,避免影响默认进程池的服务.this

7.开启PHP到MySQL的持久链接,使一个PHP-FPM工做进程保持一个到MySQL的长链接,避免每次请求都重复创建一次数据库链接.阿里云

8.虚拟机最容易出现的性能瓶颈主要仍是磁盘,CPU倒仍是其次(可能存在超售,且虚拟化后的性能损失),而内存通常没法超售.日志

假设一台32核心的物理服务器上跑了32个虚拟机(VPS),那物理母机的磁盘IOPS就会被32个虚拟机分摊.code

因此通常服务商都建议客户把存在大量I/O读写的服务如数据库放到专门的地方,好比阿里云的云数据库RDS,把图片等静态资源放到CDN.进程

因此,你能够考虑把8核心16GB内存的云服务器拆成一台4核心8GB内存的云服务器(跑PHP)和一台4核心8GB内存的云数据库(跑MySQL).

虚拟化技术中,CPU能够超售,Linux的vmstat的st值就反映了超售状况.

st : time stolen from this vm by the hypervisor 虚拟化hypervisor从当前虚拟机vm偷走的时间.

若是st这个值很高的话,说明你的VPS提供商的CPU资源有限,而你没能抢过别人,颇有可能就是VPS提供商超售了.

因此提供商会推出一个价格更高的独享型的云服务器.

9.若是不使用RDS而是本身运维MySQL(InnoDB表),加大innodb_buffer_pool_size能明显提高读性能.innodb_flush_log_at_trx_commit设为0能提高写性能,但宕机时会致使丢失上1秒钟写入的数据.另外,关闭二进制日志(log-bin)或者下降二进制日志写入频率(sync_binlog=1000)也能提高写性能.

10.查看PHP-FPM慢日志(slowlog)和MySQL慢日志(slow_query_log),找出PHP和SQL中可能存在性能问题的地方.

相关文章
相关标签/搜索