我有一个通过护照提供oauth2.0的API。对于低流量,它工作正常,但是由于我们增加了流量,所以它崩溃了。我们在具有8 cpu / 16gb ram / SSD的EC2机器上有一个docker应用程序。 api所提供的全部功能是检查电子邮件/密码/ client_id / client_secret,然后将令牌写入数据库,并将用户数据写入Redis存储区。 (2次读取/ 2次写入/ 1次写入redis)。它返回一个JWT access_token和refresh_token(加上ttl)
通过具有必要扩展名的ubuntu docker + nginx + 7.0php-fpm对laravel应用程序进行了docker化。 (与Chris Fidao在他的系列withdocker中创建的dockerize相同)
我(在AWS的另一台ec2机器上)运行locust.io服务器,测试了200个用户/ 10影线/秒和所有内核上100%的cpu利用率。 如果我将其增加到255ish-我开始遇到一些502错误的网关。我检查了php日志,并且php-fpm无法再服务。我对php-fpm.conf文件进行了调整:pm =按需提供200个孩子,最大请求数为1000。我能够以15格/秒的100%cpu利用率实现300多名用户。作为另一项测试-我所做的工作是使用RAW读取数据库查询+原始插入查询并删除了redis书写-只是将其写为route / api.php闭包的一部分,然后将其撕掉了。我设法以134个请求/秒的速度(没有控制器)最多吸引了500个用户
我的问题是: 这些指标对任何人来说似乎都不对吗?我有8核/ 16GB,即时通讯吞吐量低吗? 在找到泰勒·奥特威尔(Taylor Otwell)的blog之后,他如何在Digital Ocean上使用2GB内存机器达到500个请求/秒的速度-我应该检查一个设置吗? 我只是想确保这是我的最终基准指标,并有效地接收更多请求-我应该在负载均衡器下添加另一台服务器。
更新#1
更新#2 对于那些要求htop指标超载的人
更新#3
-已启用route:cache
-已启用config:cache
检查泊坞窗是否已启用Zend OPCache
不幸的是,没有任何改善。