我有一个iOS社交应用程序。
这个应用程序与我的服务器通信,经常进行更新和检索。主要是小文本作为 JSON。有时用户会上传图片,然后我的web-server
会上传到S3 Bucket
。不会从web-server
中检索到任何图片或任何其他类型的文件
EC2 Micro Ubuntu 13.04
实例运行PHP 5.5
、PHP-FPM
和NGINX
。缓存由Elastic Cache
使用 Redis
处理,数据库连接到单独的m1.large
MongoDB
服务器。内容可以是相当动态的,因为新闻源可以是动态的。
在配置NGINX
性能方面,我完全是新手,我正在尝试查看我是否正确配置了我的服务器。
我正在使用Siege
来测试我的服务器负载,但我找不到任何类型的统计数据,说明我的系统应该能够处理多少并发用户/页面加载,以便我知道我做对了或做错了什么。
我的服务器应该能够处理多少并发用户/页面加载量?
我想如果我不能从经验中获得统计数据,那么对我的micro instance
来说应该是什么简单、中等和极端?
我知道还有其他几个问题在问类似的事情。但是没有人为类似的系统提供任何形式的估计,这就是我正在寻找的。
Jonathan指出的原因,我没有在micro实例上尝试过nginx。如果您消耗 CPU 突发,您将受到非常严重的限制,您的应用程序将变得无法使用。
如果你想走这条路,我建议:
尝试限制nginx和php5-fpm的CPU使用率,以确保您不会超过CPU惩罚。我不知道那是什么。我认为微实例的主要问题是保持一致的 CPU 可用性。如果你越过盖子,你就被搞砸了。
如果可能的话,尝试使用fastcgi_cache。你希望只有在真正需要时才点击php5-fpm。
请记住,动态压缩会消耗大量 CPU。我的意思是很多 cpu(对于几乎没有 CPU 功率的实例)。如果您可以使用gzip_static,请这样做。但我相信你不能。
至于统计数据,您需要自己做。我有m1.small的统计数据,但没有微型的统计数据。首先让nginx提供一个只有很少kb的静态html文件。对 10 个并发用户进行围攻基准测试模式 10 分钟并测量。确保你正在从更强大的机器上围攻。
围攻 -B -C10 -T600s 'http://私有 IP/测试.html'
通过这样做,您可能会看到 cpu 限制的影响!您要关注的是每秒的事务数以及nginx可以提供多少吞吐量。请记住,m1small max 是 35mb/s,所以 m1.micro 会更少。
然后,转到 json 响应。尝试压缩。查看每秒可以获得多少并发请求。
别忘了回到这里报告你的数字。
此致敬意。
微型实例的独特之处在于它们使用可突增的配置文件。虽然您可能会在短时间内获得两个 2 ECU 的性能,但在它使用其可突发分配后,它将限制在 0.1 或 0.2 ECU 左右。最终分配重置,您可以再次获得 2 个 ECU。
其中大部分将归结为应用程序的CPU/内存负载。听起来你已经很好地优化了它。