nginx - php-fpm性能问题
大家讲道理
大家讲道理 2017-04-11 10:37:35
0
5
471

我博客用的是nginx+php的架构,架设在阿里云上,配置是1核+2GB内存,数据库是mysql,但是文章缓存在redis上。我域名用了HTTPS。

用阿里云性能测试,参数如下:

刚开始博客正常运行,cpu占用率持续100%,前台访问博客,延迟已经超过5秒,平时200ms左右。

博客是用laravel开发的,我以为是laravel框架过于庞大导致的。

后来我改了博客的入口文件,入口文件只输出一个字符串1。
但看了进程状态,如下,仍然感到十分惊讶,区区50个进程竟然把CPU逼到这种地步?

问题是:

1.这种情况是PHP本身性能使然,还是我的配置出了问题?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(5)
Peter_Zhu

2017年4月7日 14:12:08更新
测试了一下线性并发的pts和响应时间,数据如下:

线性并发:

并发数 PTS(p/s) 步调(s) 预热(min) 事务响应时间(页面响应时间)ms
50 9.0 1s 0 5500ms
45 9.0 1s 0 5000ms
40 9.1 1s 0 4500ms
30 9.3 1s 0 3200ms
20 9.5 1s 0 2286ms
10 9.5 1s 0 1100ms

随后测试了一下静态html页,pts大概是800左右,响应时间1.2ms

最后测试了一下空php文件,pts大概是500,响应时间2ms左右。

得出结论:

服务器使用top命令查看负载情况并不准确,可能是进程启动的一瞬间的cpu占用情况,有一定的延迟。
最准确的指标还是持续的pts

这是证明了laravel的性能真的不太好,相对于空php文件,pts下降了50倍。

原始答案
今天自己卸载了nginx的ssl配置模块,速度还是很慢。
应该不是HTTPS模块的问题。

伊谢尔伦

有没有可能是LARAVEL的路由跟NGINX的配置有问题? LARAVEL的路由让NGINX的转发出现了某种问题?

洪涛

建议更改入口文件后,重启nginx和php-fpm看下,关注下nginx的log,看是否请求都正常。如果依然出现上述情况,可通过进程id查看哪个文件操作的进程

Peter_Zhu

题主所说的后来我改了博客的入口文件,入口文件只输出一个字符串1。还是走的Laravel框架吧?应该是Laravel框架本身的开销比较大。

我刚才试了下,如果纯原生PHP输出一个非常简单的1,应该不会这么高的CPU使用率的:

服务器也是阿里云,配置是单核CPU + 1G内存。

一般来说Laravel框架只有原生PHP的性能的10%左右的吧。50个并发导致CPU 100%应属正常情况。

不过你的博客日常PV有多少呀?要是经常性50个并发连接,那怎么着PV也得10万+吧? 这种情况下可以考虑把博客静态化,让nginx去扛,然后把登录和评论这种动态内容才通过PHP来处理。

再补充个:PHP7的性能比PHP5/PHP6都要好,现在都发布一年多了,题主可以考虑也升级到PHP7

小葫芦

Laravel+Swoole的方案,性能比fpm快10x+

例如laravoole

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!