Laravel/Lumen搭建服务器性能测试

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 分析laravel搭建的服务器的吞吐量、cpu使用率、内存消耗,最后在这个服务器环境上测试php sdk的性能。

背景和目的

一个最简单的服务器,我们至少也要关心服务器的吞吐量、cpu使用率、内存消耗。这篇文章会在上篇文章的基础上,使用搭建好的环境测试这个几个基本指标,分析性能瓶颈,给出可能的解决的方法。最终的目的是在服务器环境中测试oss php sdk的性能。

准备

利用上一篇搭建好的环境(参见 https://yq.aliyun.com/articles/173260?spm=5176.8091938.0.0.ZkrjGo ) 我们写一个最简单的测试代码,

#修改routes/web.php为

Route::get('/', function()
{
    return "Hello Laravel!\n";
});

这段代码不和oss有任何交互,只是接受一个请求然后返回 "Hello Laravel !"
我们简单测试一下:
laravel_curl

没错,这样我们就完成了测试的准备工作。

测试数据

我在自己的macair上用Apache的ab命令模拟多线程并发请求,测试服务器负载压力,当然你可以采用其他工具。我把Laravel搭建的服务起在一个4核8G的物理机上,对外暴露的域名服务是http://www.test_laravel.com/

#这条命令代表client端有100个并发、总共5000次请求发给服务器
time ab -c 100 -n 5000 http://www.test_laravel.com/

laravel_ab

通过执行结果我们看到5000个简单返回给用户"Hello Laravel!"的请求花费20多s.
再看处理请求时服务器的cpu和内存状况,
laravel_top

可以看出,内存不是瓶颈,但cpu几乎被吃光。
继续看在主机cpu耗干的情况下, 处理请求的QPS,我们通过从nginx的aceess log中来看:
laravel_qps

果然不出所料,QPS(最左侧一列)低到底裤都没有。

分析

这样的结果不敢相信,一开始肯定是觉得自己的姿势不对,google搜索一下发现几乎所有人用Laravel的都是这个问题,QPS上不去,php-fpm耗光了cpu。实在不明白Laravel这样的性能能干什么,虽然我的服务器是个4核8G的菜机,但也不至于差成这样。

如何提高

Laravel 从 5 起已经能算是全栈框架了,从前端到后端,如果你只是想开发个小项目,可以使用Lumen,这是个为速度而生的Laravel精简框架,它使用最小的配置集成了所有Laravel的重要特性,适合开发小型项目,我使用Lumen再来测试一次。(Lumen安装请自己搞定,其实和Laravel几乎一样)
OK, 我们使用同样的姿势在Lumen上测试,
修改routes/web.php

$app->get('/', function () {
        return "Hello Lumenl!\n";
});

我们把Lumen搭建的服务对外暴露的域名定为www.test_lumen.com, 同样检查一下环境:
lumen_curl
环境OK。

这里有个插曲,因为我是在自己的macair上执行ab命令模拟并发,发现怎么都打不满现在lumen搭建的服务器的cpu,qps也上不去。原因猜测是因为macair性能差无法模拟出这么多并发,我换了台性能好的机器执行ab命令,问题解决。 因为5000个请求基本1s就处理完了,为便于观察,我把总请求数调大为50000。

#100个并发、50000次请求
time ab -c 10 -n 50000 http://www.test_laravel.com/

看效果:
lumen_ab

服务器端发现cpu也打满了。
lumen_top

再看access log:
lumen_qps

看最左侧,现在QPS已经可以打到4500了,巨大的提升。

oss php sdk性能测试

说了这么多的铺垫工作,终于到了要测oss php sdk性能的环节了。
我们知道php本身是不支持多线程的,所以oss php sdk是一个线程来上传下载的,可想而知它性能会有多差。幸运的是,大部分使用php sdk的开发者是把它用在服务器端的,这样我们就可以借助服务器以一种多进程的方式来测试。
上篇文章我们已经知道如何在laravel/lumen中使用oss php sdk了,现在我们同样写一个简单的和oss交互的测试程序,目标是能通过这个简单测试程序打满一个千兆网卡。
我们访问用lumen搭建的服务,同样修改routes/web.php

$app->get('/', function () use ($app) {
        $client = $app->make('aliyun-oss');
        $file_pre = mt_rand(1, 10000);
        $file_sec = mt_rand(1, 10000);

        $bucket_name = "you_bucket";
        $object_name = 'lumen/net' . $file_pre . $file_sec;
        $local_file = "/tmp/data100M";
        $client->uploadFile($bucket_name, $object_name,  $local_file);
        return "upload OK!\n";
});

这段代码逻辑很简单,服务器收到一个访问请求后,他就调用oss php sdk向oss上传一个100M的文件,我们也先不考虑可能出现的异常分支。

我们同样用ab测试, 但注意不要请求太多,观察到现象就行(毕竟是要收钱的^-^)。
我起10个并发共20个请求,

time ab -c 10  -n 20 http://www.test_lumen.com/

然后观察服务器的网卡、cpu、mem信息,
发现网卡已经打满,
netspeed

cpu和内存还是有很有富余,
oss_php_sdk_top

总结

主要测试了laravel/lumen结合oss php sdk搭建最简单应用的性能,一些原理性的解释先不在这里做介绍,以后有机会可以再开篇文章。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2月前
|
网络协议 安全 测试技术
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
手撕测试tcp服务器效率工具——以epoll和io_uring对比为例
40 2
|
2月前
|
存储 弹性计算 运维
阿里云服务器ECS经济型e实例详细介绍_性能测试和租用价格
阿里云服务器ECS经济型e实例详细介绍_性能测试和租用价格,阿里云服务器ECS推出经济型e系列,经济型e实例是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器,CPU采用Intel Xeon Platinum架构处理器,支持1:1、1:2、1:4多种处理器内存配比,e系列性价比优选
|
1月前
|
弹性计算 分布式计算 DataWorks
DataWorks报错问题之ecs自建数据库连通性测试报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
弹性计算 缓存 测试技术
阿里云2核4g服务器(费用价格/性能测试/支持人数)
阿里云2核4g服务器能支持多少人访问?2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
1月前
|
弹性计算 缓存 测试技术
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试,2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
2月前
|
存储 负载均衡 监控
epoll服务器百万并发测试
epoll服务器百万并发测试
31 1
|
2月前
|
弹性计算 数据中心
阿里云香港服务器详细介绍_BGP多线精品测试_CN2高速网络
阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量。阿里云百科来详细介绍阿里云香港云服务器
|
2月前
|
弹性计算 测试技术 数据中心
阿里云香港服务器BGP多线精品网络_CN2性能测试_中国香港主机测试
阿里云香港服务器BGP多线精品网络_CN2性能测试_中国香港主机测试,阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量
|
3月前
|
SQL 安全 测试技术
项目迁移到云服务器,如何做迁移测试?
项目迁移到云服务器,如何做迁移测试?
|
11天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
19 0