首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EC2集群上的Nginx扩展与瓶颈识别

EC2集群上的Nginx扩展与瓶颈识别
EN

Stack Overflow用户
提问于 2011-12-30 13:50:05
回答 1查看 1.1K关注 0票数 1

我正在开发一个大型应用程序,我必须对它进行加载测试。它是一个基于EC2的集群,其中包含一个用于应用程序的HighCPU Ex.Large实例,用于运行PHP / NGinx。

此应用程序负责从包含大约5k - 10k键值的redis服务器读取数据,然后进行响应并将数据记录到mongoDB服务器并回复到客户端。

每当我向应用服务器发送请求时,它都会在20-25 ms内完成所有的计算,这是非常棒的。

我现在正在尝试做一些负载测试,我运行了一个基于php的应用程序,在我的笔记本电脑上发送请求到服务器。他们中的数千人在20-30秒内很快。在此加载期间,每当我在浏览器中打开应用程序URL时,它的响应时间大约为25-35 ms,这也很酷。所以我相信红芒果和芒果不会造成瓶颈。但是在加载过程中需要大约25秒的时间才能恢复响应。

高CPU前。大型实例有8 GB RAM和8核。

此外,在负载测试期间,顶层命令显示大约4-6个php_cgi进程消耗了大约15-20%的CPU。

我在nginx上有50个工作进程,1024个工作程序连接。

造成瓶颈的问题是什么?

如果这不可行,我会认真考虑使用嵌入式and服务器和嵌入式缓存的整个java应用程序。

更新-将PHP_FCGI_CHILDREN增加到8,并将负载期间的响应时间减半。

EN

回答 1

Stack Overflow用户

发布于 2011-12-30 14:18:30

50个工作进程太多了,每个CPU核心只需要一个工作进程。使用更多的工作进程将调用进程间切换,这将花费很多时间。

现在可以做的事情: 1.将工作进程设置为最小(每个CPU有一个工作进程,例如,如果有4个cpu单元,则设置4个工作进程),但是工人连接-最大(例如10240)。

  1. 通过sysctl调整TCP堆栈。如果您有来自nginx stub_status模块的许多stub_status统计信息,则可以达到堆栈限制(您可以使用munin + nginx,它易于设置,并提供了足够的系统状态信息)。
  2. 检查nginx error.log和系统消息日志中是否有错误。
  3. 调整nginx (减少连接时间和最大查询大小)。

我希望这对你有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8680119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档