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进程池中处理,避免影响默认进程池的服务.

7.开启PHP到MySQL的持久连接,使一个PHP-FPM工作进程保持一个到MySQL的长连接,避免每次请求都重复建立一次数据库连接.

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

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

所以一般服务商都建议客户把存在大量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中可能存在性能问题的地方.

时间: 2024-07-30 15:21:05

PHP网站部署的相关文章

A网站引用B服务器虚拟目录文件导致:网站部署到IIS7上出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题

A网站引用B服务器共享目录(虚拟目录)导致:网站部署到IIS7上出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题 本攻略并不是本机的部署导致的HTTP 错误 500.19 问题  本机500.19错误 解决办法连接 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginRequest 处理程序 尚未确定 错误代码 0x80070005 配置

.net网站部署winserver2008R2 iis浏览只显示目录浏览

问题场景:asp.netMVC4, 网站部署winserver2008R2 iis浏览只显示目录浏览,安装formarwork 4.5框架 解决问题:重新注册4.0框架:DOS命令执行---- C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

.net 网站部署出现 no relevant source lines

1.确保环境搭建时是先安装的iis,再安装的framework(否则你就要再注册一下了   开始>输入cmd> C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i       执行前确定你的版本号是否正确) 2.C:\Windows>Temp 给Temp文件的IIS_IUSERS和 NETWORK SERVICE两个用户设置所有权限 3.如果前两步执行后还是不行的话再执行这个试试吧 C:\Windows\M

访问远程服务器和网站部署,discuz部署

访问远程服务器mstsc 网站部署 购买阿里云 discuz 部署 有的时候,只是你没有接触过不知道怎么去搜索 自行车座管 还是看sant  感觉有项目的思路   bro是知识的集成 很系统

[网站部署_01]wordpress建站网页响应速度慢

近期可能很多人发现网站打开速度变慢,这里分享一下该问题的定位方法. 我在本地部署了一个wordpress站点,近几天突然发现网站访问速度奇慢,实在不能忍,于是采用如下方法解决了这个问题: 1)使用chrome(360浏览器也可以),打开目标网页. 2)在页面空白处点击鼠标右键 → 选择"审查元素" → 选择"Network"选项卡,如下图: 3)按F5刷新页面,结果如下: 在列表中找出响应时间最长的一项,看见红色的哪一项了么?fonts.googleapis.com

IIS网站部署常见问题处理

最近需要使用web网站的虚拟目录来实现各终端程序的自动更新访问,这里总结一下,网站部署时,需要注意的一些事项. 1.网站部署上去后,提示无读取权限 设置网站文件夹的安全权限. 2.IIS网站的设置 (1)目录浏览: 选中网站,找到目录浏览项目,双击后,确保已经启用,并且设置为长期. (2)有的网站找不到默认首页的处理 在右侧的默认文档当中,添加对应格式的文件即可.例如:默认首页如果没有Index.aspx可以通过添加该格式设置默认文档首页. 3.网站默认不允许下载config文件如何处理? 需要

从零开始编写自己的C#框架(25)——网站部署

导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附加数据库 10.添加数据库访问用户 11.设置数据库链接 对于网站的安全部署方面,大家请看我以前写的<服务器安全部署文档>里面已基本上将服务器相关的安全设置都讲到了,照着里面的操作一般的黑客是比较慢攻击进来的(代码漏洞除外),而本章的部署则是是该篇设置好的基础上来创建站点的. 1.关掉访问保护 打

django+nginx+supervisor+gunicorn+gevent 网站部署

django+nginx+supervisor+gunicorn+gevent 网站部署 django,nginx,supervisor,gunicorn,gevent这几个都是在本领域大名鼎鼎的软件,下面的部署都是在ubuntu12.04里面验证成功的! 首先是安装这些软件在ubuntu下面都比较简单,nginx和supservisor的安装如下 apt-get install nginx,supervisor 在ubuntu下使用python,强烈建议安装python-dev apt-get

ASP.NET—018:ASP.NET网站部署

ASP.NET程序编写好了后,需要发布和部署.发布可以使用visual  studio自带的发布功能,程序发布后放置在文件夹内.然后就是部署值服务器了. 以windows server 2008 R2,程序环境为.net 2.0为例. 1.配置服务器环境所需的软件. 如果你面对的是一个新的服务器那么你需要安装如下软件, (1).net framework2.0,.net framework3.5,.net framework4.0等,根据你的程序环境决定.一般都自带的有.net环境,依次打开:右

asp.net 网站部署出错-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

错误信息:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 解决方法之一: 编译项目指定目标平台为x86就完了,不能用any cpu 生成->配置管理器->平台->点击Any Cpu选项卡->新建->新建平台->X86 解决方法之二: 在对应的 IIS 应用程序池中,“设置应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true. asp.net 网站部署出错-未在本地计算机上注册"Microsoft.Jet.OL