Rumah  >  Soal Jawab  >  teks badan

nginx - php-fpm性能问题

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

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

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

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

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

问题是:

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

大家讲道理大家讲道理2727 hari yang lalu474

membalas semua(5)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-11 10:39:35

    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模块的问题。

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 10:39:35

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

    balas
    0
  • PHP中文网

    PHP中文网2017-04-11 10:39:35

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

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-11 10:39:35

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

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

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

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

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

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

    balas
    0
  • 高洛峰

    高洛峰2017-04-11 10:39:35

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

    例如laravoole

    balas
    0
  • Batalbalas